首页 > 代码库 > C#防止程序多次运行
C#防止程序多次运行
经过我的测试,还比较好用,但是有个问题,如果不注销,用另一个用户进入,则程序不能判断出已运行。所以只限于用在单用户环境,还是不太完美。
class Program { [STAThread] static void Main(string[] args) { //防止程序多次运行 if (!OneInstance.IsFirst("MyTest")) { Console.WriteLine("警告:程序正在运行中! 请不要重复打开程序!可在右下角系统栏找到!"); return; } Console.WriteLine("正在运行中"); Console.ReadLine(); } } public static class OneInstance { ///<summary> ///判断程序是否正在运行 ///</summary> ///<param name="appId">程序名称</param> ///<returns>如果程序是第一次运行返回True,否则返回False</returns> public static bool IsFirst(string appId) { bool ret = false; if (OpenMutex(0x1F0001, 0, appId) == IntPtr.Zero) { CreateMutex(IntPtr.Zero, 0, appId); ret = true; } return ret; } [DllImport("Kernel32.dll", CharSet = CharSet.Auto)] private static extern IntPtr OpenMutex( uint dwDesiredAccess, // access int bInheritHandle, // inheritance option string lpName // object name ); [DllImport("Kernel32.dll", CharSet = CharSet.Auto)] private static extern IntPtr CreateMutex( IntPtr lpMutexAttributes, // SD int bInitialOwner, // initial owner string lpName // object name ); }
出处:http://blog.csdn.net/lanman/article/details/3648455
C#防止程序多次运行
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。