1

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

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

4

2 回答 2

2

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

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

于 2013-10-11T16:21:20.260 回答
0

的最后一个参数CreateProcessPROCESS_INFORMATION包含hProcess句柄的结构,您可以将此句柄与WaitForSingleObject

于 2013-10-11T16:09:38.360 回答