不报错,但同步失败,原因???
Mutex myMutex = new Mutex(false);
myMutex.WaitOne();
//
myMutex.ReleaseMutex();
添加一个参数,为互斥量命名,就成功了
看到的很多例子也都没有互斥量名字这一参数
Mutex myMutex = new Mutex(false, "name");
myMutex.WaitOne();
//
myMutex.ReleaseMutex();
Mutex mutex = new Mutex(false, “MainForm”, out flag);
其中:
第一个参数:指定互斥是否最初应由主调线程拥有。
第二个参数:MainForm为互斥量的名字,操作系统中只有一个命名为MainForm的互斥量的mutex,如果一个线程得到这个MainForm的互斥锁,其他线程就无法得到这个互斥锁了,必须等待那个线程对这个进程释放。
第三个参数:定义为输出参数,接收一个表示互斥是否为新建的布尔值。如果返回的值是false,就表示互斥已经定义,互斥可以在另一个进程中定义,因为操作系统能够识别有名称的互斥,它由不同的进程共享。如果没有给互斥指定名称,互斥就是未命名的,不在不同的进程之间共享
(From:https://blog.csdn.net/qq_30725967/article/details/90201771)