2016-01-14 3 views
0

Ищу выполнять некоторые функции, которые принимают меры по останавливая скриптаВыполните какое-либо событие на «Стоп Операции

Щелкая enter image description here

Возможно ли это ??

Я использую .Net объект, и некоторые из них должны выполнить Dispose, чтобы закрыть их. Я хочу знать, можно ли это сделать?

+0

Я не знаю, что вы имеете в виду здесь «остановить скрипт». Вы говорите об ошибках? Затем взгляните на «Get-Help about_Try_Catch_Finally -ShowWindow». Если вы говорите о том, что нажали кнопку разрыва в PowerShell ISE, я не знаю ничего, что могло бы вызвать это. Это эквивалент удара Ctrl-Break, который завершает процесс. –

+0

Так звучит для меня, как будто вы используете цикл без выхода, и вам все равно хотелось бы действовать на все, что происходит в цикле, когда вы решите, что пришло время выйти? Дайте нам более подробную информацию о том, что вы пытаетесь сделать, и кто-то может помочь. Все, что приходит на ум - сначала объявить пустую коллекцию $ collection = @(), а затем $ collection + = (некоторые вещи в цикле), а затем, когда вы остановите скрипт, вы все равно сможете получить доступ к коллекции $. В противном случае вместо того, чтобы останавливать скрипт вручную, вы можете проверить его на наличие какого-либо условия, например, файл, который вы создаете, когда он должен остановиться. –

+0

@ChrisN ya loop $ true –

ответ

2

Если я понимаю ваш вопрос, вы хотите знать, можете ли вы как-то уловить нажатие кнопки «Стоп» (Rece ipt сигнала разрыва). Я не знаю, как, в powershell, заметить сигнал прерывания, но вы можете использовать блок finally, чтобы убедиться, что ваш код Dispose вызывается. Вот мой простой тест:

try{ 
    while($true) 
    { 
     Write-Host "In try block . . . " 
     Start-Sleep 1 
    } 
} 
catch 
{ 
     Write-Host "In catch block" 
} 
finally 
{ 
     Write-Host "In finally block" 
} 

Когда я запускаю его из ISE и нажмите кнопку остановки (или нажмите Ctrl-C) я получаю:

# C:\Temp> .\stopEx.ps1 
In try block . . . 
In try block . . . 
In finally block 
+0

Это сработало для меня. не знал, наконец, работал на перерыв; :) –