方法一:
static class Program
{
private static System.Threading.Mutex mutex;
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//提示框样式
MessageBoxEx.UseSystemLocalizedString = true;
MessageBoxEx.EnableGlass = false;
MessageBoxEx.DefaultStartPosition = FormStartPosition.CenterParent;
mutex = new System.Threading.Mutex(true, "OnlyRun");
if (mutex.WaitOne(0, false))
{
frmLogin login = new frmLogin();
if (login.ShowDialog() == DialogResult.OK)
{
Application.Run(new frmMain());
}
}
else
{
MessageBoxEx.Show("程序已经在运行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
Application.Exit();
}
}
}
static class Program
{
private static System.Threading.Mutex mutex;
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//提示框样式
MessageBoxEx.UseSystemLocalizedString = true;
MessageBoxEx.EnableGlass = false;
MessageBoxEx.DefaultStartPosition = FormStartPosition.CenterParent;
mutex = new System.Threading.Mutex(true, "OnlyRun");
if (mutex.WaitOne(0, false))
{
frmLogin login = new frmLogin();
if (login.ShowDialog() == DialogResult.OK)
{
Application.Run(new frmMain());
}
}
else
{
MessageBoxEx.Show("程序已经在运行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
Application.Exit();
}
}
}
方法二:
private static void GetSingleThread()
{
string name = Process.GetCurrentProcess().ProcessName;
int id = Process.GetCurrentProcess().Id;
Process[] prc = Process.GetProcesses();
foreach(Process pr in prc)
{
if ((name == pr.ProcessName) && (pr.Id != id))
{
MessageBox.Show("对不起,本地已经有系统正在运行!\n.","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning);
System.Environment.Exit(0);
}
}
}