Boolean createdNew; //返回是否赋予了使用线程的互斥体初始所属权 System.Threading.Mutex instance = new System.Threading.Mutex(true, "MutexName", out createdNew); //同步基元变量 if (createdNew) //赋予了线程初始所属权,也就是首次使用互斥体 { Application.Run(new Form1()); /s/这句是系统自动写的 instance.ReleaseMutex(); } else { MessageBox.Show("已经启动了一个程序,请先退出!","系统提示",MessageBoxButtons.OK,MessageBoxIcon.Error); Application.Exit(); } 用以上代码实现了禁止多重启动的功能。 同时程序关闭重启是通过下面的代码实现的: Process.Start(Process.GetCurrentProcess().ProcessName + ".exe"); Application.Exit(); 这时就出现一个问题,程序自动关闭重启的时候就会提示已经启动了一个程序了。 请问应该怎么解决?
问题补充:
关闭之后过一会儿再启动是没问题的。 但是现在自动关闭,自动重启有的时候能成功,有的时候就被禁止多重启动的那个截住了。 那就必须手动重新启动 比如,点【重新启动】按钮的时候执行以下代码: Process.Start(Process.GetCurrentProcess().ProcessName + ".exe"); Application.Exit(); 这时它是先启动一个新的Process然后才退出当前程序。 这时就会在Program.cs里遇到禁止多重启动的那段代码。就不能自动启动了
最佳答案