Synchronisation de 2 processus à l'aide d'objets de synchronisation interprocess - Mutex ou AutoResetEvent

Envisagez le scénario suivant: je suis en cours d'exécution de mon application qui, au cours de son exécution, doit exécuter un autre processus, et seulement après que la 2e fin du processus interne d'initialisation spécifique, peut-être mon premier processus se poursuivre. E. g:

...
//Process1 code does various initializations here
Process.Start("Process2.exe");
//Wait until Process2 finishes its initialization and only then continue (Process2 doesn't exit)
...

Je vois plusieurs options:

  1. Mutex - Mutex vient à l'esprit automatiquement lorsque l'on considère la communication interprocessus, cependant, je ne peux pas voir un moyen de provoquer de Fabrication1 attendre un mutex qu'il a généré lui-même. Je peut causer Process2 pour créer un mutex et d'attendre sur Process1 jusqu'le Mutex est créé (à l'aide de vote et Mutex.OpenExisting fonction)
  2. AutoResetEvent - Ceux qui seraient parfaites pour la tâche, cependant, il semble qu'en vertu de l' .NET de ces ne peut pas être utilisé pour interprocessus communcation.
  3. CreateEvent - je peux l'utiliser P/Invoke et l'utilisation Win32 CreateEvent fonction. En théorie, il pourrait me fournir ce dont j'ai besoin. Je préfère ne pas utiliser les fonctions natives, cependant, si cela est possible.
  4. Utiliser un fichier externe - Le plus simple serait d'utiliser certains OS externe de l'objet (fichier, base de registre, etc). Toutefois, cela semble plutôt hacky, cependant.

Je serais heureux d'entendre votre avis, pour ce cas.

Merci!

source d'informationauteur VitalyB