C#启动程序时检测运行多个实例
C# Code:static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.ThreadException = new ThreadExceptionEventHandler(Application_ThreadException);//捕获系统所产生的异常。
Application.ThreadExit = new EventHandler(Application_ThreadExit);
#region 检查程序是否运行多实例
if (Program.IsRunInstance())//检查程序是否运行多实例
{
Msg.Warning("系统已经启动!");
Application.ExitThread();
Application.Exit();
return;
}
#endregion
Application.Run(new frmMonitor());//运行主窗体
}
static void Application_ThreadExit(object sender, EventArgs e)
{
if (mutex != null)
{
mutex.ReleaseMutex();
mutex = null;
}
}
private static Mutex mutex = null;
/// <summary>
///检查程序是否运行多实例
/// </summary>
public static bool IsRunInstance()
{
mutex = new Mutex(false, "指纹考勤系统");
if (!mutex.WaitOne(0, false))//如果返回false则mutex已经被另一个线程所拥有
{
mutex.Close();
mutex = null;
return true;
}
return false;
}
private static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
MonitorLog.AddLog(e.Exception.Message);//程序未知错误,写入日志
}
谢谢楼主分享 使用2013开发的程序好像没有用了。 ydong95 发表于 2014-8-14 20:56
使用2013开发的程序好像没有用了。
我没试过2003的,我试试 不错——,
页:
[1]