比如在某目录下的c#程序被用户双击启动并运行后,有些用户习惯不好,可能会再次双击导致同一个目录下2个程序在跑,出现错误,如何防止,谢谢

解决方案 »

  1.   

    using System.Threading;bool CreateStatus = false;Mutex m_Mutex = new Mutex(true, "测试程序",out CreateStatus);if (CreateStatus == false){Console.WriteLine("重复启动");//return;}
      

  2.   

    在你的program.cs下面
    namespace xx
    {
        static class Program
        {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                //只允许运行一个实例
                string mName = Process.GetCurrentProcess().MainModule.ModuleName;
                string pName = Path.GetFileNameWithoutExtension(mName);
                Process[] myProcess = Process.GetProcessesByName(pName);
                if (myProcess.Length > 1)
                {
                    MessageBox.Show(Properties.Settings.Default.OnlyOneInstance, Properties.Settings.Default.MessageBoxTitle, MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                    return;
                }
                else
                {
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    Application.Run(new MainForm());
                }
            }
        }
    }
      

  3.   

        static class Program
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
                System.Diagnostics.Process[] pros = System.Diagnostics.Process.GetProcessesByName(System.Diagnostics.Process.GetCurrentProcess().ProcessName);
                if (pros.Length > 1)
                {
                    MessageBox.Show("已经启动了一个程序,请先退出!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    Environment.Exit(0);
                    return;
                }
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new MainForm());
            }
        }
    如果有问题请一定告诉我,因为我在好几个程序中用它!
      

  4.   

      [STAThread]
            static void Main()
            {            Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);            System.Diagnostics.Process _Process = System.Diagnostics.Process.GetCurrentProcess();            System.Diagnostics.Process[] _ProcessList = System.Diagnostics.Process.GetProcessesByName(_Process.ProcessName);            int _ProcessInst = 0;            for (int i = 0; i != _ProcessList.Length; i++)
                {
                    if (_ProcessList[i].MainModule.FileName == _Process.MainModule.FileName)
                    {
                        _ProcessInst++;
                    }
                }            if (_ProcessInst ==1 )Application.Run(new Form2());
            }这些写