2013-05-17 50 views
1

我正在使用EventWaitHandle來觸發從Windows窗體應用程序沒有窗口的本機進程的乾淨關閉。當我有多個這些進程同時運行時,設置事件將會停止所有這些進程。有沒有辦法將事件發送到單個選定的過程?我保留一個Process變量爲他們每個人。發送事件到單個進程

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

回答

1

聽起來更像是你想爲每個進程命名的事件句柄。

您可以使用Process.Id爲每個進程獲取唯一的ID,並使用它爲每個進程生成唯一的字符串。

由於進程標識是全局的,因此可以安全地假定這兩個進程可以正確使用該標識。

然後,您可以將此號碼附加到某個字符串(如「MyProcessEvent」)以提供「MyProcessEvent6345615」。然後使用該字符串在兩個進程中打開名爲EventWaitHandle

然後您的控制器進程可以使用該名稱發出啓動的任何進程的信號。

A process finds its own ID via Process.GetCurrentProcess())。

+0

我無法更改本機進程偵聽的事件 –

+0

因此,您無法以任何方式更改客戶端軟件?這點很重要。 :)在這種情況下,你無能爲力。 –

+0

我確實有源代碼訪問權限,但我不確定其他工具使用此事件 –