【发布时间】:2020-11-28 08:09:59
【问题描述】:
总结
我想知道在不让主线程进入睡眠状态的情况下保持 PowerShell 脚本运行的最佳方法。使用Start-Sleep 使脚本保持活动状态具有阻塞在同一线程上运行的异步事件处理程序的副作用。
示例代码
考虑以下脚本,它演示了这种阻塞的作用。
$Timer = [System.Timers.Timer]::new(500)
Register-ObjectEvent -InputObject $Timer -EventName Elapsed -Action { Write-Host -ForegroundColor Blue hi }
$Timer.Start()
Start-Sleep -Seconds 5
运行此脚本时,您会看到 Timer 被阻止执行其处理程序,直到 Start-Sleep 命令完成。但是,您还会注意到事件在后台排队,一旦主线程被释放,所有事件都会快速连续触发。
此外,一旦Start-Sleep 命令完成运行,脚本就会退出。
问题:如何在不阻塞事件处理程序的情况下保持 PowerShell 进程/脚本运行?
【问题讨论】:
-
做...直到您确实想停止脚本并测试某个事件?
标签: powershell