C# 如何仅通过Win32 API实现.NET Process.Exit事件
在C#上,很容易检测到特定进程ID是否已退出C# 如何仅通过Win32 API实现.NET Process.Exit事件,c#,.net,windows,winapi,process,C#,.net,Windows,Winapi,Process,在C#上,很容易检测到特定进程ID是否已退出 Process p = Process.GetProcessById(pid); p.Exited += new EventHandler(OnExited); 我应该怎么做才能只通过Win32 API编写与此相同的操作 执行此操作的方式与.NET Process类完全相同。在进程句柄上使用。当句柄收到信号(即进程完成)或可选超时过期时,您的回调将运行。请记住,与.NET一样,回调在ADPool线程上运行,因此需要进行适当的同步。作为Hans回答的
Process p = Process.GetProcessById(pid);
p.Exited += new EventHandler(OnExited);
我应该怎么做才能只通过Win32 API编写与此相同的操作 执行此操作的方式与.NET Process类完全相同。在进程句柄上使用。当句柄收到信号(即进程完成)或可选超时过期时,您的回调将运行。请记住,与.NET一样,回调在ADPool线程上运行,因此需要进行适当的同步。作为Hans回答的替代方法,您也可以使用
WaitForSingleObject
同步等待进程句柄,谢谢。我试过这个代码:handlewo=NULL;handleh=OpenProcess(PROCESS\u ALL\u ACCESS,TRUE,pid);BOOL res=RegisterWaitForSingleObject(&wo,h,WaitCallback,0,无限,WT_executeOnce);闭合手柄(h);