EventWaitHandle 上的 PowerShell CloseHandle
PowerShell CloseHandle on EventWaitHandle
我有两个 PowerShell 脚本。其中一个必须在某个时刻等待另一个。以下是相关部分:
等待脚本。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
我有两个 PowerShell 脚本。其中一个必须在某个时刻等待另一个。以下是相关部分:
等待脚本。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