我目前正在使用EventWaitHandle
来触发一个原生进程的干净关闭,该进程没有来自Windows窗体应用程序的窗口。当我同时运行多个这些进程时,设置该事件将停止所有进程。有没有办法将事件发送到单个选定的流程?我为每个变量保留了Process
变量。
EventWaitHandle Event = new EventWaitHandle(false, EventResetMode.ManualReset, "EventName");
Event.Set();
答案 0 :(得分:1)
听起来您更希望每个进程都有一个命名的事件句柄。
您可以使用Process.Id
为每个流程获取唯一ID,并使用它为每个流程生成唯一字符串。
由于进程ID是全局的,因此可以安全地假设两个进程都可以正确使用该ID。
然后,您可以将此数字附加到某些字符串(如“MyProcessEvent”)上,例如“MyProcessEvent6345615”。然后使用该字符串在两个进程中打开命名的EventWaitHandle
。
然后,您的控制器进程可以发出使用该名称开始的任何进程的信号。
(A process finds its own ID via Process.GetCurrentProcess()
)。