解决方案 »

  1.   

    bool runone;
                System.Threading.Mutex run = new System.Threading.Mutex(true, "进程名称", out runone);
                if (runone)
                {
                run.ReleaseMutex();
                Application.EnableVisualStyles();//系统自带
                Application.SetCompatibleTextRenderingDefault(false);//系统自带
                Application.Run(new MainForm());//系统自带
                }
                else
                {
                    MessageBox.Show("此软件已经运行,请勿重复打开!", "出错了!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                } 
      

  2.   

    是存在这种可能: 重启的程序可能放弃运行,因为侦测到旧的程序还在运行(旧程序正在退出,但Mutex还没有释放)。
    解决方法之一就是改写启动时对mutex的测试,使他能重试一定时间(比如3秒)后才推出。
    解决方法之二就是在调用Application.Exit之前,放弃Mutex。
      

  3.   

    可以使用
                Application.Restart();
      

  4.   

    System.Diagnostics.Process.Start(System.Reflection.Assembly.GetExecutingAssembly().Location); :这是启动一个新的程序吧。Application.Exit();  :会关闭自身。并且顺带关闭由他实例化的所有程序。 我只能理解这么多。