私が行った場合:
ConsoleApp1:
bool mutexCreated;
var mutex = new Mutex(true, "MemoryMappedFileMutex", out mutexCreated);
Console.Write("Run Console App2 then press enter");
Console.Read();
// do work
Thread.Sleep(5000);
mutex.ReleaseMutex(); // makes console app 2 to stop waiting
ConsoleApp2
var mutex = Mutex.OpenExisting("MemoryMappedFileMutex");
mutex.WaitOne();
// continue executing once console app 1 releases mutex
すべてがうまく機能します。ただし、このアルゴリズムを機能させるには、最初に consoleApp1 を開始する必要があります。
今私の質問は、consoleApp2をサーバーとして機能させたいということです。したがって、最初にそのアプリケーションを起動したいと思います。問題は、私が行う場合:
bool mutexCreated;
var mutex = new Mutex(true, "MemoryMappedFileMutex", out mutexCreated);
mutex.WaitOne(); // <------ mutex will not wait why????
私がmutex.WaitOne()
そのスレッドを実行すると、待機しなくなります。つまり、consoleApp2 を最初に起動し、コンソール アプリケーション 1 で何らかの方法でミューテックスにシグナルを送るまで、そのアプリケーションを待機させたいと考えています。