C#实现一次只能打开一个客户端以及关闭自动重启的问题
在 WinForm 开发中,我们经常用到一个程序只能打开一个客户端的问题。实现的方法如下:
在program.cs文件中的Main()方法中添加以下代码:
bool ret; //定义一个变量,用于存储是否已有打开的客户端的标志
///使用 Threading 的同步基元对象 Mutex,根据 ProductName 通过方法操作把判断值赋给 ret 标志
System.Threading.Mutex mutex = new System.Threading.Mutex(true, Application.ProductName, out ret);
if (ret)
{
//如果 ret 标志为 true,则说明没有已打开的客户端,运行程序,打开新的客户端
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//Application.Run(new LoginForm());
Application.Run(new Form1());
mutex.ReleaseMutex();
}
else
{
//如果 ret 标志为 false,则说明已有打开的客户端,不能继续打开,程序退出
System.Windows.Forms.MessageBox.Show(null, "您已经打开了一个客户端,不能重复打开!", Application.ProductName);
Application.Exit();
}
有些时候,在我们更改系统的某些配置之后,希望程序可以自己重启,那么我们需要用到下边的代码:
Process.Start(this.GetType().Assembly.Location); Application.Exit();