Eri*_*let 4 c# process intptr waithandle
我想在2种不同的类型上使用WaitForMultipleObjects:
我不知道如何将(以适当的方式)"process.Handle"转换为WaitHandle以使以下代码工作:
var waitHandles = new WaitHandle[2];
waitHandles[0] = waitHandleExit;
// Next line is the offending one:
waitHandles[1] = new SafeWaitHandle(process.Handle, false);
int waitResult = WaitHandle.WaitAny(waitHandles, timeOut);
Run Code Online (Sandbox Code Playgroud)
我得到错误:
Error 1 Cannot implicitly convert type 'Microsoft.Win32.SafeHandles.SafeWaitHandle' to 'System.Threading.WaitHandle' ...
Run Code Online (Sandbox Code Playgroud)
有人知道等待进程和EventWaitHandle的正确方法吗?
更新......我选择答案的原因.
首先感谢所有人:Jaroen,Slugart和Sriram.所有答案都非常好.
十分感谢!!!
你可以继承WaitHandle,它代表Process.Handle并使用它的实例WaitHandle来等待.
public class ProcessWaitHandle : WaitHandle
{
private readonly Process process;
public ProcessWaitHandle(Process process)
{
this.process = process;
this.SafeWaitHandle = new SafeWaitHandle(process.Handle, false);
}
}
var waitHandles = new WaitHandle[2]
{
waitHandleExit,
new ProcessWaitHandle(process)
};
int waitResult = WaitHandle.WaitAny(waitHandles, timeOut);
Run Code Online (Sandbox Code Playgroud)