如果我做:
控制台应用程序1:
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
控制台应用程序2
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 上以某种方式向互斥锁发出信号...。