【转】c# winform 只允许运行一个实例
c# winform 只允许运行一个实例
方法 1:
- using System;
- using System.Collections.Generic;
- using System.Windows.Forms;
- using System.Diagnostics;
- namespace WFForbidAction
- {
- static class Program
- {
- /// <summary>
- /// 应用程序的主入口点。
- /// </summary>
- [STAThread]
- static void Main()
- {
- Application.EnableVisualStyles();
- Application.SetCompatibleTextRenderingDefault(false);
- #region 只允许运行一个实例
- Process pr = Process.GetCurrentProcess();
- Process[] prlist = Process.GetProcessesByName(pr.ProcessName);
- if (prlist.Length >= 2)
- {
- return;
- }
- #endregion
- Application.Run(new Form1());
- }
- }
- }
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Diagnostics;
namespace WFForbidAction
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
#region 只允许运行一个实例
Process pr = Process.GetCurrentProcess();
Process[] prlist = Process.GetProcessesByName(pr.ProcessName);
if (prlist.Length >= 2)
{
return;
}
#endregion
Application.Run(new Form1());
}
}
}
方法2:
- bool exist;//定义一个bool变量,用来表示是否已经运行
- //创建Mutex互斥对象
- System.Threading.Mutex newMutex = new System.Threading.Mutex(true, "test", out exist);
- if (exist)//如果没有运行
- {
- newMutex.ReleaseMutex();//运行新窗体
- }
- else
- {
- MessageBox.Show("本程序一次只能运行一个实例!",
- "温馨提示",
- MessageBoxButtons.OK,
- MessageBoxIcon.Information);
- this.Close();
- }

浙公网安备 33010602011771号