我目前正在使用EventWaitHandle
来触发一个没有Windows窗体应用程序窗口的本机进程的干净关机。当我有多个这些进程同时运行时,设置事件将停止所有这些进程。是否有任何方法将事件发送到单个选定的流程?我为它们每个保留一个Process
变量。
EventWaitHandle Event = new EventWaitHandle(false, EventResetMode.ManualReset, "EventName");
Event.Set();
听起来更像是您希望每个进程都有一个命名的事件句柄。
您可以使用Process.Id
为每个进程获得一个唯一的ID,并使用它为每个进程生成一个唯一的字符串。
由于进程ID是全局的,因此可以安全地假设该ID可以被两个进程正确使用。
你可以把这个数字附加到像"MyProcessEvent"这样的字符串上,比如"myprocesseven6345615"。然后使用该字符串在两个进程中打开命名的EventWaitHandle
。
然后你的控制器进程可以用这个名字通知它启动的任何进程。
(进程通过Process.GetCurrentProcess()
找到自己的ID)。