Рассмотрим следующий сценарий: I ' m запускает мое приложение, которое во время своего выполнения должно запускать другой процесс, и только после того, как этот второй процесс завершит внутреннюю специфическую инициализацию, мой первый процесс будет продолжен. Например:
...
// Process1 code does various initializations here
Process.Start("Process2.exe");
// Wait until Process2 finishes its initialization and only then continue (Process2 doesn't exit)
...
Я вижу несколько вариантов:
- Mutex - Mutex приходит на ум автоматически при рассмотрении межпроцессного взаимодействия, однако я могу ' Я не вижу способа заставить Process1 ждать мьютекса, который он сгенерировал сам. Я могу заставить Process2 создать мьютекс и ждать на Process1, пока он не будет создан (используя опрос и функцию Mutex.OpenExisting)
- AutoResetEvent - они идеально подходят для этой задачи, однако, похоже, что в .NET их нельзя использовать для межпроцессного взаимодействия.
- CreateEvent - Я могу использовать P / Invoke и использовать функцию Win32 CreateEvent. Теоретически он мог бы предоставить мне все, что мне нужно. Однако я бы предпочел не использовать собственные функции, если это возможно.
- Использовать внешний файл - Самый простой способ - просто использовать некоторый внешний объект ОС (файл, реестр и т. Д.). Однако это кажется довольно хакерским.
Буду рад услышать ваше мнение по этому делу.
Спасибо!
задан VitalyB 8 November 2010 в 12:44
поделиться