I want to WaitForMultipleObjects on 2 different types:
- an 'EventWaitHandle'
- a 'Process.Handle' ==> intptr
I don't know how to convert (in the appropriate way) "process.Handle" to a WaitHandle in order to have the following code working:
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);
Im getting the error:
Error 1 Cannot implicitly convert type 'Microsoft.Win32.SafeHandles.SafeWaitHandle' to 'System.Threading.WaitHandle' ...
Anybody know the right way to wait for a process and an EventWaitHandle ?
Update... Reasons for my choice of answer.
First of all thanks to all: Jaroen, Slugart and Sriram. All answers were very nice.
- Jaroen solution for a reason I ignored didn't work on my machine. My 'Exited' event never occured (perhaps only on Disposed?).
- Slugart solution worked perfectly and I tried it before I red its answer.
- Sriram solution worked perfectly and I opted for it because I do not create a false EventWaitHandle and seems to be more clean according to my vision.
Thanks a lots!!!
You could subclass the WaitHandle which represents
Process.Handle
and use instance of thatWaitHandle
to wait.