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();

 

posted @ 2013-05-02 16:21  飞絮风翔  阅读(266)  评论(0编辑  收藏  举报