C#单实例运行Sample
之前在C++里接触过内核同步对象,早上在前辈的代码里看到了,于是用C#实现看看。
其实很简单,通过System.Threading.Mutex就可以直接管理了……
创建一个WinForm项目,之所以用WinForm是因为运行时比较明显 = =。。
创建一个单例类CommonClass:
using System.Threading; namespace MutexTest { public class CommonClass { private static CommonClass instance = new CommonClass(); public static CommonClass Instance { get { return instance; } } private CommonClass() { } private Mutex mutex; public bool StartMutex() { bool flag = true; if (mutex == null) { mutex = new Mutex(false, mutexName, out flag); } return flag; } } }
修改主程序内容为:
CommonClass tmpClass = CommonClass.Instance; if (tmpClass.StartMutex()) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } else { MessageBox.Show("已经在运行另一实例!"); }
这样即可实现单例运行。