2013-05-17 2 views
1

В настоящее время я использую EventWaitHandle, чтобы вызвать чистое завершение процесса, который не имеет окна из приложения Windows Forms. Когда у меня будет несколько процессов, выполняемых одновременно, установка события остановит их все. Есть ли способ отправить событие в один выбранный процесс? Я сохраняю переменную Process для каждого из них.Отправить событие в один процесс

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

ответ

1

Это похоже на то, что вы хотите, чтобы именованный дескриптор события обрабатывался в процессе.

Вы можете использовать Process.Id, чтобы получить уникальный идентификатор для каждого процесса и использовать его для создания уникальной строки для каждого процесса.

Поскольку идентификатор процесса является глобальным, он позволяет предположить, что идентификатор может использоваться обоими процессами правильно.

Затем вы можете добавить это число в строку, например «MyProcessEvent», чтобы дать, скажем, «MyProcessEvent6345615». Затем используйте эту строку, чтобы открыть названный файл EventWaitHandle в обоих процессах.

Тогда ваш процесс контроллера может сигнализировать о любых процессах, которые он начал использовать с этим именем.

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

+0

Я не могу изменить, какое событие пользовательский процесс прослушивает –

+0

Таким образом, вы не можете каким-либо образом изменить клиентское программное обеспечение? Это очень важно знать. :) В этом случае вы ничего не можете сделать. –

+0

У меня есть исходный доступ, но я не уверен, что другие инструменты используют это событие –

Смежные вопросы