Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何仅通过Win32 API实现.NET Process.Exit事件_C#_.net_Windows_Winapi_Process - Fatal编程技术网

C# 如何仅通过Win32 API实现.NET Process.Exit事件

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回答的

在C#上,很容易检测到特定进程ID是否已退出

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);