日期:2014-05-17  浏览次数:21143 次

C# 创建唯一实例后使用Application.Restart()
使用如下方法保证程序启动唯一实例:
bool ret;
System.Threading.Mutex mutex = new System.Threading.Mutex(true, Application.ProductName, out ret); 
if (ret)
{
  Application.EnableVisualStyles();
  Application.SetCompatibleTextRenderingDefault(false);
  Application.Run(new FrmMain());
   
  //Main为你程序的主窗体,如果是控制台程序不用这句  
  mutex.ReleaseMutex();
 }
 else
 {
  MessageBox.Show(null, "本程序已经运行", Application.ProductName, MessageBoxButtons.OK,MessageBoxIcon.Warning);
  Application.Exit();
}

问题:
我想重启程序。
我在代码中使用Application.Restart()后,会提示本程序已经运行。

怎样启用唯一实例,又可以实现重新启动程序的功能???

------解决方案--------------------
class Program
{
public static System.Threading.Mutex mutex;
static void Main()
{
//...
}
}

ps:
把System.Threading.Mutex mutex写成一个静态成员后,就不用在Main()中mutex.ReleaseMutex(); 
而关闭Mutex可以直接用Program.mutex.Close(); 这里它跟Dispose的作用一样。