2013-05-17 9 views
1

현재 EventWaitHandle을 사용하여 Windows Forms 응용 프로그램의 창을 가지고 있지 않은 기본 프로세스를 완전히 종료합니다. 동시에 여러 프로세스가 실행 중이면 이벤트를 설정하면 모든 프로세스가 중지됩니다. 선택한 단일 프로세스에 이벤트를 보낼 수있는 방법이 있습니까? 나는 각각에 대해 Process 변수를 유지합니다.단일 프로세스로 이벤트 보내기

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

답변

1

프로세스마다 이름이 지정된 이벤트 핸들을 원하는 것처럼 들립니다.

Process.Id을 사용하여 각 프로세스에 대한 고유 한 ID를 얻고이를 사용하여 각 프로세스에 대해 고유 한 문자열을 생성 할 수 있습니다.

프로세스 ID가 전역이므로 ID가 두 프로세스에서 올바르게 사용될 수 있다고 가정하는 것이 안전합니다.

그런 다음이 번호를 "MyProcessEvent"와 같은 일부 문자열에 추가하여 "MyProcessEvent6345615"를 부여 할 수 있습니다. 그런 다음 해당 문자열을 사용하여 두 프로세스 모두에서 EventWaitHandle이라는 이름을 엽니 다.

그러면 컨트롤러 프로세스는 그 이름을 사용하여 시작한 프로세스를 신호로 알릴 수 있습니다.

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

+0

네이티브 프로세스가 청취하는 이벤트를 변경할 수 없습니다 –

+0

어떤 방식 으로든 클라이언트 소프트웨어를 변경할 수 없습니까? 그것은 아는 것이 아주 중요합니다. :) 그런 경우에는 할 수있는 일이 없습니다. –

+0

소스 액세스 권한이 있지만 다른 도구가이 이벤트를 사용하는지 잘 모르겠습니다. –