1

.NET では、オブジェクトExitedイベントSystem.Diagnostics.Processをサブスクライブし、プロセスが終了したときに非同期通知を受け取ることができます。これは私にとって本当に便利です。

シグナルなどを使用したスト​​レートな Win32 に相当するものはありますか? 私が想像する最も近いのはWaitForSingleObject、無限のタイムアウトでプロセスハンドル以外に何もしないスレッドを生成し、コールバックを呼び出すことです。

4

2 に答える 2

2

はい、プロセス ハンドルで WaitForSingleObject() を呼び出すスレッドは機能します。しかし、それは無駄です。オペレーティング システムにRegisterWaitForSingleObject()を使用して実行させることができます。.NET Process クラスが Exited イベントを発生させるために使用する関数とまったく同じです。

コールバックで実行できることとまったく同じ種類の制約です。これは任意のスレッドプール スレッドで実行されるため、コードをスレッドセーフに保つために必要な場所で適切にインターロックする必要があります。

于 2013-10-11T16:21:20.260 に答える
0

の最後の引数はCreateProcess、ハンドルPROCESS_INFORMATIONを含む構造体hProcessです。このハンドルを次のように使用できます。WaitForSingleObject

于 2013-10-11T16:09:38.360 に答える