1

現在EventWaitHandle、Windows フォーム アプリからのウィンドウを持たないネイティブ プロセスのクリーン シャットダウンをトリガーするために を使用しています。これらのプロセスを複数同時に実行している場合、イベントを設定するとすべてが停止します。選択した単一のプロセスにイベントを送信する方法はありますか? Processそれぞれの変数を保持します。

EventWaitHandle Event = new EventWaitHandle(false, EventResetMode.ManualReset, "EventName");
Event.Set();
4

1 に答える 1

1

プロセスごとに名前付きイベント ハンドルが必要なようです。

を使用Process.Idして各プロセスの一意の ID を取得し、それを使用して各プロセスの一意の文字列を生成できます。

プロセス ID はグローバルであるため、ID を両方のプロセスで正しく使用できると想定しても問題ありません。

次に、この番号を「MyProcessEvent」などの文字列に追加して、たとえば「MyProcessEvent6345615」を与えることができます。次に、その文字列を使用してEventWaitHandle、両方のプロセスで名前付きを開きます。

その後、コントローラ プロセスは、その名前を使用して開始したプロセスにシグナルを送ることができます。

(プロセスは を介し​​て独自の ID を見つけますProcess.GetCurrentProcess())。

于 2013-05-17T17:59:32.327 に答える