读书人

C# 创造唯一实例后使用Application.Re

发布时间: 2012-11-06 14:07:00 作者: rapoo

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的作用一样。

读书人网 >C#

热点推荐