【发布时间】:2013-11-15 16:57:59
【问题描述】:
在 C# 上,很容易检测特定进程 ID 是否已退出。
Process p = Process.GetProcessById(pid);
p.Exited += new EventHandler(OnExited);
如果只通过 Win32 API 编写与此相同的操作,我应该怎么做?
【问题讨论】:
标签: c# .net windows winapi process
在 C# 上,很容易检测特定进程 ID 是否已退出。
Process p = Process.GetProcessById(pid);
p.Exited += new EventHandler(OnExited);
如果只通过 Win32 API 编写与此相同的操作,我应该怎么做?
【问题讨论】:
标签: c# .net windows winapi process
您执行此操作的方式与 .NET Process 类执行此操作的方式完全相同。在进程句柄上使用RegisterWaitForSingleObject()。当句柄收到信号(即进程完成)或可选超时到期时,您的回调将运行。请记住,与 .NET 一样,回调在 theadpool 线程上运行,因此需要适当的同步。
【讨论】:
作为 Hans 回答的替代方案,您还可以使用 WaitForSingleObject 同步等待进程句柄。
【讨论】: