2013-05-17 22 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

我确实有源代码访问权限,但我不确定其他工具使用此事件 –