只运行单一实例
方法1:
using System.Threading;
Mutex mutex;
public MainForm()
{
InitializeComponent();
mutex = new Mutex(false, "SINGLE_INSTANCE_MUTEX");
if (!mutex.WaitOne(0, false))
{
mutex.Close();
mutex = null;
}
}
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
// Application.Run(new MainForm());
MainForm app = new MainForm();
if (app.mutex != null)
{
Application.Run(new MainForm());
}
else
{
// MessageBox.Show("实例已经运行!");
}
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose(bool disposing)
{
if (disposing)
{
if (components != null)
{
components.Dispose();
}
mutex.ReleaseMutex();
}
base.Dispose(disposing);
}