将事件发送到单个进程

时间:2013-05-17 17:48:58

标签: c# cross-process event-wait-handle

我目前正在使用EventWaitHandle来触发一个原生进程的干净关闭,该进程没有来自Windows窗体应用程序的窗口。当我同时运行多个这些进程时,设置该事件将停止所有进程。有没有办法将事件发送到单个选定的流程?我为每个变量保留了Process变量。

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

1 个答案:

答案 0 :(得分:1)

听起来您更希望每个进程都有一个命名的事件句柄。

您可以使用Process.Id为每个流程获取唯一ID,并使用它为每个流程生成唯一字符串。

由于进程ID是全局的,因此可以安全地假设两个进程都可以正确使用该ID。

然后,您可以将此数字附加到某些字符串(如“MyProcessEvent”)上,例如“MyProcessEvent6345615”。然后使用该字符串在两个进程中打开命名的EventWaitHandle

然后,您的控制器进程可以发出使用该名称开始的任何进程的信号。

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