Цитата:
Цитата Busla
описанные вами задачи не выглядят сколько-нибудь тяжеловесными, чтобы хотя бы успеть заметить/увидеть прогресс-бар »
|
Задачи с текстовым содержимым плейлистов таки да, выполняются достаточно быстро. Но, к примеру, та же проверка потоков на работоспособность или какой-нить сканер занимают по времени 30-40 мин. и поболее. Всё зависит от объёмности плейлиста, как ниже правильно заметили.
Но вопрос то даже не в том, можно заметить движение прогресс бара или нет. Если в скрипте есть циклы, то можно прогресс бар добавить, но опять таки он будет работать не всё время выполнения скрипта... Да и для каждого скрипта нужно свой прогресс бар мудрить.
Поэтому и подумал о секундомере, чтобы с него как-то брать данные для прогресс бара и это было бы универсальным решением для любого скрипта.
Цитата:
Цитата YuS_2
Чтобы сказать о том, что возможно, а что нет, необходимо таки увидеть скрипт... »
|
YuS_2, да скрипты то разные, соответственно и решения с прогресс баром будут разными... Хотелось бы что-то универсальное.
Есть такой скрипт:
Код:
Add-Type -AssemblyName PresentationCore,PresentationFramework
[xml]$xaml = @"
<Window Name="main"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="250.456" Width="223.212">
<Grid Margin="0,0,2,0">
<Label HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" RenderTransformOrigin="-1.028,-1.353" Width="186" Height="38">
<Grid Height="38" Margin="0,0,0,0" Width="176">
<TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" Text="Запуск скрипта" VerticalAlignment="Top" Height="28" Width="97" FontSize="18" FontFamily="Segoe Script" Margin="10,0,0,0"/>
<TextBlock Name="Count" Text="" HorizontalAlignment="Right" TextWrapping="Wrap" VerticalAlignment="Top" Height="28" Width="48" FontSize="18" FontFamily="Segoe Script"/>
</Grid>
</Label>
<Button Name="inc" Content="Запустить скрипт" HorizontalAlignment="Left" Margin="10,53,0,0" VerticalAlignment="Top" Width="180" Height="45">
</Button>
<ProgressBar Minimum="0" Maximum="100" Margin="10,93,0,0" HorizontalAlignment="Left" Width="180" Height="45" Name="pbStatus" />
</Grid>
</Window>
"@
$reader=(New-Object System.Xml.XmlNodeReader $xaml)
$Window=[Windows.Markup.XamlReader]::Load( $reader )
$xaml.SelectNodes("//*[@*[contains(translate(name(.),'n','N'),'Name')]]") | %{
Set-Variable -Name ($_.Name) -Value $Window.FindName($_.Name) -Scope Global
}
$inc.add_click({
$pbStatus.isIndeterminate=$true
$runspace = [runspacefactory]::CreateRunspace()
$runspace.Open()
$runspace.SessionStateProxy.SetVariable('pbStatus',$pbStatus)
$powershell = [powershell]::Create()
$powershell.Runspace = $runspace
$powershell.AddScript({
Здесь любой скрипт
$pbStatus.Dispatcher.invoke([action]{$pbStatus.isIndeterminate=$false})
$pbStatus.Dispatcher.invoke([action]{$pbStatus.value=100})
})
$powershell.BeginInvoke()
})
$Window.showdialog()
Прошу прощения, что не указываю автора, просто не помню где нашел этот код.
Работает с любым скриптом... Но неудобно с него запускать скрипты, лишнее окно и т.д. Да и сам прогресс бар просто движется непрерывно.
|