保证程序只有一个实例运行并且先将旧实例关闭再运行新实例

using  System;
using  System.Collections.Generic;
using  System.Windows.Forms;
using  System.Threading;
using  System.Diagnostics;
using  System.Reflection;

namespace  MyClient
{
    
    
static   class  Program
    {

        
///  
        
///  The main entry point for the application.
        
///  

        [STAThread]
        
static   void  Main( string [] args)
        {

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(
false );
            
// bool blnCreate;//Another method to make sure only one instance
            
// Mutex m = new Mutex(true, "MyClient", out blnCreate);
            
// if (blnCreate)
            CloseRunningInstance();
            Application.Run(
new  MainFrm());
        }
        
// Close the existed instance of my application
         static   void  CloseRunningInstance()
        {
            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)
                    {
                        
// Close the other process instance.   
                        process.Kill();
                        process.WaitForExit();
                    }
                }
            }
        } 
    }
}

你可能感兴趣的:(保证程序只有一个实例运行并且先将旧实例关闭再运行新实例)