C#程序不运行第二个实例
2013-08-21 10:11
92 查看
Process[] allProcess = Process.GetProcesses();//所有进程
再用进程集合去判断是否运行该程序。方法2采用这种想法。
判断程序是否已经运行,使程序只能运行一个实例有很多方法,下面两种。
方法1:线程互斥
方法2:
这种检测进程的名的方法,并不绝对有效。因为打开第一个实例后,将运行文件改名后,还是可以运行第二个实例。
再用进程集合去判断是否运行该程序。方法2采用这种想法。
判断程序是否已经运行,使程序只能运行一个实例有很多方法,下面两种。
方法1:线程互斥
static class Program { private static System.Threading.Mutex mutex; /// <summary>/// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); mutex = new System.Threading.Mutex(true, "OnlyRun"); if (mutex.WaitOne(0, false)) { Application.Run(new MainForm()); } else { MessageBox.Show("程序已经在运行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); Application.Exit(); } } }
方法2:
这种检测进程的名的方法,并不绝对有效。因为打开第一个实例后,将运行文件改名后,还是可以运行第二个实例。
static class Program { /// <summary>/// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); // get the name of our process string p = System.Diagnostics.Process.GetCurrentProcess().ProcessName; // get the list of all processes by that name System.Diagnostics.Process[] processes = System.Diagnostics.Process.GetProcessesByName(p); // if there is more than one process if (processes.Length > 1) { MessageBox.Show("程序已经在运行中", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information); Application.Exit(); } else { Application.Run(new MainForm()); } } }
相关文章推荐
- c# 程序只能运行一次(多次运行只能打开同一个程序) 并激活第一个实例,使其获得焦点,并在最前端显示.
- C#限制程序只能运行一個实例 (防多开)
- C#程序只允许运行一个实例的解决方案 分类: .NET 2012-12-15 12:03 438人阅读 评论(0) 收藏
- [C#]只能运行程序的一个实例
- c# 程序只能运行一次(多次运行只能打开同一个程序) 并激活第一个实例,使其获得焦点,并在最前端显示.
- 用C#给程序加启动画面并只允许一个应用程序实例运行
- C#程序只允许运行一个实例的解决方案
- c# 程序只能运行一个实例
- C#让程序只运行一次实例
- C#程序只允许运行一个实例的解决方案
- 用C#给程序加启动画面并只允许一个应用程序实例运行
- 使用Mutex实现程序单实例运行(c#)
- 使用Mutex实现程序单实例运行(c#)
- C#使用Mutex实现程序单实例运行
- 使用Mutex实现程序单实例运行(c#)
- C# WinForm 程序单实例运行,再次运行时激活前一个实例
- C#运行CGI程序实例
- C#使用Mutex简单实现程序单实例运行的方法
- C#_WinForm程序只允许运行一个实例
- C#建立了一个windows程序,如何防止多个程序实例运行?