EventWaitHandle 上的 PowerShell CloseHandle

问题描述

我有两个 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