C# Winform程序实现防止多开的方法总结【亲测】
程序员文章站
2023-11-18 17:42:10
本文实例讲述了c# winform程序实现防止多开的方法。分享给大家供大家参考,具体如下:1、winform启动的时候,检测是否存在同样的进程名,防止程序多开;static class program...
本文实例讲述了c# winform程序实现防止多开的方法。分享给大家供大家参考,具体如下:
1、winform启动的时候,检测是否存在同样的进程名,防止程序多开;
static class program { /// <summary> /// 应用程序的主入口点。 /// </summary> [stathread] static void main() { process[] processes = process.getprocesses(); process currentprocess = process.getcurrentprocess(); bool processexist = false; foreach (process p in processes) { if (p.processname == currentprocess.processname && p.id != currentprocess.id) { processexist = true; } } if (processexist) { application.exit(); } else { application.enablevisualstyles(); application.setcompatibletextrenderingdefault(false); application.run(new form1()); } } }
static class program { /// <summary> /// 应用程序的主入口点。 /// </summary> [stathread] static void main() { string processname = process.getcurrentprocess().processname; process[] processes = process.getprocessesbyname(processname); //如果该数组长度大于1,说明多次运行 if (processes.length > 1) { messagebox.show("程序已运行,不能再次打开!"); environment.exit(1); } else { application.enablevisualstyles(); application.setcompatibletextrenderingdefault(false); application.run(new form1()); } } }
2、利用mutex互斥对象防止程序多开;
static class program { /// <summary> /// 应用程序的主入口点。 /// </summary> [stathread] static void main() { bool isapprunning = false; mutex mutex = new mutex(true, system.diagnostics.process.getcurrentprocess().processname, out isapprunning); if (!isapprunning) { messagebox.show("程序已运行,不能再次打开!"); environment.exit(1); } application.enablevisualstyles(); application.setcompatibletextrenderingdefault(false); application.run(new form1()); } }
上一篇: C#实现飞行棋项目