问题描述
我有两个 PowerShell 脚本。其中一个必须在某一时刻等待另一个。以下是相关部分:
WaitingScript.ps1:
$StopEventName = 'MyEvent'
function Wait-StopEvent {
$EventResetModeManualReset = 1
$StopEventObject = New-Object -TypeName System.Threading.EventWaitHandle -ArgumentList $false,$EventResetModeManualReset,$StopEventName
$StopEventObject.WaitOne()
}
SignallingScript.ps1:
$StopEventName = 'MyEvent'
function Signal-StopEvent {
$StopEventObject = [System.Threading.EventWaitHandle]::OpenExisting( $StopEventName )
$StopEventObject.Set()
}
效果很好,我只是不确定是否应该在任一脚本中调用 CloseHandle 或 Close on $StopEventObject
。
解决方法
是的——至少我看不出你应该不关闭句柄的理由——否则句柄使用的资源不会被释放。见WaitHandle.Close at Microsoft