EventWaitHandle上的PowerShell CloseHandle
我有两个PowerShell脚本。其中一个必须在另一个地方等待。以下是相关部分: WaitingScript.ps1:EventWaitHandle上的PowerShell CloseHandle,powershell,synchronization,handle,thread-synchronization,event-wait-handle,Powershell,Synchronization,Handle,Thread Synchronization,Event Wait Handle,我有两个PowerShell脚本。其中一个必须在另一个地方等待。以下是相关部分: WaitingScript.ps1: $StopEventName = 'MyEvent' function Wait-StopEvent { $EventResetModeManualReset = 1 $StopEventObject = New-Object -TypeName System.Threading.EventWaitHandle -ArgumentList $false, $E
$StopEventName = 'MyEvent'
function Wait-StopEvent {
$EventResetModeManualReset = 1
$StopEventObject = New-Object -TypeName System.Threading.EventWaitHandle -ArgumentList $false, $EventResetModeManualReset, $StopEventName
$StopEventObject.WaitOne()
}
$StopEventName = 'MyEvent'
function Signal-StopEvent {
$StopEventObject = [System.Threading.EventWaitHandle]::OpenExisting( $StopEventName )
$StopEventObject.Set()
}
SignalingScript.ps1:
$StopEventName = 'MyEvent'
function Wait-StopEvent {
$EventResetModeManualReset = 1
$StopEventObject = New-Object -TypeName System.Threading.EventWaitHandle -ArgumentList $false, $EventResetModeManualReset, $StopEventName
$StopEventObject.WaitOne()
}
$StopEventName = 'MyEvent'
function Signal-StopEvent {
$StopEventObject = [System.Threading.EventWaitHandle]::OpenExisting( $StopEventName )
$StopEventObject.Set()
}
它工作得很好,我只是不确定我是否应该在这两个脚本中调用类似CloseHandle的东西,或者在
$StopEventObject
上关闭它。是的-至少我没有看到不应该关闭句柄的原因-否则句柄使用的资源将不会被释放。请参见,我应该在等待停止事件
和信号停止事件
中关闭它,还是仅在创建它的等待停止事件
中关闭它?在WinAPI中,我会在两侧调用,但您链接的页面上说,它将调用Dispose。打两次电话可以吗?