Win32相当于.NET的System.Diagnostics.Process.Exited事件?

时间:2013-10-11 15:56:38

标签: .net winapi process signals

在.NET中,您可以在System.Diagnostics.Process对象上订阅the Exited event,并在进程退出时获得异步通知。这对我来说真的很方便。

在使用信号或其他东西的Win32中是否有任何等价物?我想象的最接近的事情是产生一个线程,除了WaitForSingleObject在进程句柄上做无效超时,然后调用回调。

2 个答案:

答案 0 :(得分:2)

是的,在进程句柄上调用WaitForSingleObject()的线程将起作用。但这很浪费,您可以通过RegisterWaitForSingleObject()让操作系统为您完成。与.NET Process类用于引发Exited事件的完全相同的函数。

在回调中可以执行的操作完全相同,它在任意线程池线程上运行,因此必须在必要时正确互锁以保持代码线程安全。

答案 1 :(得分:0)

CreateProcess的最后一个参数是包含PROCESS_INFORMATION句柄的hProcess结构,您可以将此句柄与WaitForSingleObject一起使用