C# 判斷程序是否已經在運行


 方式1:

  /// <summary>
        /// 應用程序的主入口點。
        /// </summary>
        [STAThread]
        static void Main()
        {
            //獲取欲啟動進程名
            string strProcessName = System.Diagnostics.Process.GetCurrentProcess().ProcessName;
            ////獲取版本號 
            //CommonData.VersionNumber = Application.ProductVersion; 
            //檢查進程是否已經啟動,已經啟動則顯示報錯信息退出程序。 
            if (System.Diagnostics.Process.GetProcessesByName(strProcessName).Length > 1)
            {

                MessageBox.Show("CtiAgentClient呼叫中心客戶端已經運行!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                Application.Exit();
                return;
            }

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new frmMain());
        }

 方式2:

第一種方式:利用Mutex互斥量實現同時只有一個進程實例在運行

 
static class Program
    {
        /// <summary>
        /// 應用程序的主入口點。
        /// </summary>
        [STAThread]
 static void Main()
        {
             
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            //控制當前程序已經打開(即啟動)
            //方式1:利用Mutex互斥量實現同時只有一個進程實例在運行
            //互斥鎖(Mutex)
            //互斥鎖是一個互斥的同步對象,意味着同一時間有且僅有一個線程可以獲取它。
            //互斥鎖可適用於一個共享資源每次只能被一個線程訪問的情況
            bool flag = false;
            System.Threading.Mutex hMutex = new System.Threading.Mutex(true, Application.ProductName, out flag);
            bool b = hMutex.WaitOne(0, false);
            /*上面的參數說明:
             第一個參數【initiallyOwned】:true:指示調用線程是否應具有互斥體的初始所有權 (老實說沒理解透)
             第二個參數【name】:程序唯一name,(當前操作系統中)判定重復運行的標志
             第三個參數【createdNew】:返回值,如果檢測到已經啟動則返回(false)。
             */
            if (flag)
            {
                //沒有啟動相同的程序
                Application.Run(new MainForm());
            }
            else
            {
                MessageBox.Show("當前程序已在運行,請勿重復運行。");
                Environment.Exit(1);//退出程序 
            }
        }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM