如何让我的应用程序单身应用程序?

这个问题在这里已经有了答案:

  • 创建单实例应用程序的正确方法是什么? 35个答案

  • 这里有一些好的示例应用程序。 以下是一种可能的方法。

    public static Process RunningInstance() 
    { 
        Process current = Process.GetCurrentProcess(); 
        Process[] processes = Process.GetProcessesByName (current.ProcessName); 
    
        //Loop through the running processes in with the same name 
        foreach (Process process in processes) 
        { 
            //Ignore the current process 
            if (process.Id != current.Id) 
            { 
                //Make sure that the process is running from the exe file. 
                if (Assembly.GetExecutingAssembly().Location.
                     Replace("/", "") == current.MainModule.FileName) 
    
                {  
                    //Return the other process instance.  
                    return process; 
    
                }  
            }  
        } 
        //No other instance was found, return null.  
        return null;  
    }
    
    
    if (MainForm.RunningInstance() != null)
    {
        MessageBox.Show("Duplicate Instance");
        //TODO:
        //Your application logic for duplicate 
        //instances would go here.
    }
    

    许多其他可能的方式。 查看示例以了解替代方法。

    第一。

    第二个。

    第三个


    我认为以下代码对您有所帮助。 以下是相关链接:http://geekswithblogs.net/chrisfalter/archive/2008/06/06/how-to-create-a-windows-form-singleton.aspx

    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
    
            /*====================================================
             * 
             * Add codes here to set the Winform as Singleton
             * 
             * ==================================================*/
            bool mutexIsAvailable = false;
    
            Mutex mutex = null;
    
            try
            {
                mutex = new Mutex(true, "SampleOfSingletonWinForm.Singleton");
                mutexIsAvailable = mutex.WaitOne(1, false); // Wait only 1 ms
            }
            catch (AbandonedMutexException)
            {
                // don't worry about the abandonment; 
                // the mutex only guards app instantiation
                mutexIsAvailable = true;
            }
    
            if (mutexIsAvailable)
            {
                try
                {
                    Application.Run(new SampleOfSingletonWinForm());
                }
                finally
                {
                    mutex.ReleaseMutex();
                }
            }
    
            //Application.Run(new SampleOfSingletonWinForm());
        }
    }
    

    我知道的方法如下。 该程序必须尝试打开一个已命名的互斥锁。 如果该互斥体存在,则退出,否则,创建互斥体。 但是这似乎与您的条件相矛盾:“它的另一个实例在运行时不会退出”。 无论如何,也许这也是有帮助的

    链接地址: http://www.djcxy.com/p/51139.html

    上一篇: How to make my app singleton application?

    下一篇: How to check if a WPF application is already running?