Considere el siguiente escenario: estoy ejecutando mi aplicación que, durante su ejecución, tiene que ejecutar otro proceso y solo después de que el segundo proceso finalice la inicialización específica interna, ¿puede mi primer proceso continuar Por ejemplo:Sincronización de 2 procesos usando objetos de sincronizaciones entre procesos - Mutex o AutoResetEvent
...
// Process1 code does various initializations here
Process.Start("Process2.exe");
// Wait until Process2 finishes its initialization and only then continue (Process2 doesn't exit)
...
Veo varias opciones:
- objeto mutex - mutex viene a la mente cuando se considera la comunicación entre procesos, sin embargo, no puedo ver una manera de causar Process1 que esperar para una automática mutex que él mismo generó Puedo hacer que Process2 cree un mutex y esperar en Process1 hasta que se cree el Mutex (usando polling y la función Mutex.OpenExisting)
- AutoResetEvent - Esos serían perfectos para la tarea, sin embargo, parece que en .NET estos no se puede usar para la comunicación entre procesos.
- CreateEvent - Puedo usar P/Invoke y usar la función CreateEvent de Win32. En teoría, podría proporcionarme todo lo que necesito. Preferiría no usar funciones nativas, sin embargo, si es posible.
- Utilice el archivo externo - La manera más fácil sería simplemente usar algún objeto externo del sistema operativo (archivo, registro, etc.). Sin embargo, esto parece bastante hacky, sin embargo.
Estaría encantado de escuchar su opinión sobre este caso.
Gracias!
AutoResetEvent puede ser solo local. Pero tienes razón: EventWaitHandle es exactamente lo que estaba buscando. ¡Gracias! – VitalyB
¿Por qué no se pueden utilizar AutoResetEvent y ManualResetEvent para la comunicación entre procesos? Ambos derivan de EventWaitHandle – caa