一个应用程序的.exe文件已打开,且正在运行;
如果我再次点击.exe时,应用程序还是可以重复打开,
怎么可以避免这个问题?
在线等,请各位指点! !

解决方案 »

  1.   

    static class Program
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
                bool canStart;
                System.Threading.Mutex mutex = new System.Threading.Mutex(false, "AA",out canStart);
                if (canStart)
                {
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    Application.Run(new Form1());
                }
                else
                {
                    MessageBox.Show("程序已启动");
                }
            }
        }
      

  2.   

    我用的是vs2003 c#写的应用程序
      

  3.   

    TO: jointan
        请问下列三句的意思,谢谢!!!           
      1) System.Threading.Mutex mutex = new System.Threading.Mutex(false, "AA",out    canStart);  
            
      2) Application.EnableVisualStyles();
      3) Application.SetCompatibleTextRenderingDefault(false);
      

  4.   

    如果是2003的话,可以改成下面的
    static void Main()
            {
                bool canStart;
                System.Threading.Mutex mutex = new System.Threading.Mutex(false, "AA",out canStart);
                if (canStart)
                {
                                   Application.Run(new Form1());
                }
                else
                {
                    MessageBox.Show("程序已启动");
                }
            }
    System.Threading.Mutex mutex = new System.Threading.Mutex(false, "AA",out    canStart);  是建一个名为AA的互斥锁(因为同名互斥锁只能建一次,所以如果该锁存在,则证明程序已启动,据说VB6的应用程序是用这种方式防止双开)
    后面的两句对2003没意义.
      

  5.   

    System.Threading.Mutex mutex = new System.Threading.Mutex(false, "AA",out canStart); 
    根据第二个参数,第二个参数一般设置得具有较强的唯一性
    程序第一次运行,可以正常,
    第二次运行,将跟已有的"AA"互斥了,所以canStart将为false,根据该标志位设置程序是否能启动