判斷程序是否已經運行,使程序只能運行一個實例有很多方法,下面記錄兩種,
方法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());
}
}
}
摘自 June拼搏