如何通过Win32 API实现.NET Process.Exited事件

时间:2013-11-15 16:57:59

标签: c# .net windows winapi process

在C#上,很容易检测是否退出了特定的进程ID。

Process p = Process.GetProcessById(pid);
p.Exited += new EventHandler(OnExited);

我应该怎么做才能通过Win32 API编写与此相同的操作?

2 个答案:

答案 0 :(得分:2)

您执行此操作的方式与.NET Process类完全相同。在流程句柄上使用RegisterWaitForSingleObject()。当句柄被发出信号(即过程完成)或可选的超时到期时,您的回调将运行。请记住,与.NET一样,回调在一个theadpool线程上运行,因此需要正确的同步。

答案 1 :(得分:1)

作为Hans回答的替代方法,您还可以使用WaitForSingleObject同步等待流程句柄。