我有一個PowerShell腳本,它使用一個異步計時器事件(後臺進程)來測量在採取適當操作之前發生了特定條件的時間。 當我在PowerGUI中運行腳本時,這是工作得很好,但是當我使用點源運行腳本或通過批處理文件運行它時,Timer事件操作未觸發。PowerShell異步計時器事件不能在測試控制檯以外工作
這是一段代碼片段。
$timer = New-Object System.Timers.Timer
$timer.Interval = 10000
$timer.AutoReset = $true
$timeout = 0
$action = {
"timeout: $timeout" | Add-Content $loglocation
<more stuff here>
$timer.stop()
}
$start = Register-ObjectEvent -InputObject $timer -SourceIdentifier TimerElapsed -EventName Elapsed -Action $action
$timer.start()
while(1)
{
<do some testing here>
}
所以,當它工作時,我會看到每10秒寫入日誌的「超時:XX」輸出。但是這隻有在編輯器中運行時纔會發生。當我通過批處理文件運行它時沒有任何反應(儘管我可以確認while循環處理正常)。
所以我的問題是爲什麼我的經驗不同,當我在PowerGUI中運行腳本與通過命令行?我的想法是可能存在一個問題或者並行線程,但我不確定問題是什麼。此外,我沒有在任何函數或循環中運行這些事件。