案例一
举一个例子,设计模式中的单例模式,记得当时做机房收费系统的时候就用的单例模式防止一个界面被实例多次,而Mutex对象能达到同样的效果,防止界面被实例化多次,起到控制线程的作用。
案例二
如果大家还是不太理解,举一个更简单的例子就是把Mutex看做一个出租车,乘客看做线程。乘客首先等车,然后上车,最后下车。当一个乘客在车上时,其他乘客就只能等他下车以后才可以上车
static void Main(string[] args) { bool flag = false; Mutex mutex = new Mutex(true,"MyMutex",out flag); Console.WriteLine("Flag value is {0}", flag.ToString()); if (flag) { Console.WriteLine("Start Running"); } else { Console.WriteLine("The Other Thread is running"); Thread.Sleep(TimeSpan.FromSeconds(5)); Environment.Exit(-1); } Console.ReadLine(); }
打开程序第一次时,显示 Start Runing .
不要关闭程序,再打开程序一次。
程序显示 The Other Thread is running