C# 防止程序多開(重復開啟)


Mutex(mutual exclusion,互斥)是 .Net Framework 中提供跨多個線程同步訪問的一個類。它非常類似了 Monitor 類,因為他們都只有一個線程能擁有鎖定。而操作系統能夠識別有名稱的互斥,我們可以給互斥一個唯一的名稱,在程序啟動之前加一個這樣的互斥。這樣每次程序啟動之前,都會檢查這個命名的互斥是否存在。如果存在,應用程序就退出。

下面我們使用互斥體,做到同時只運行一個程序:

示例1

bool isNotRunning;  //互斥體判斷
System.Threading.Mutex instance = new System.Threading.Mutex(true, "MutexName", out isNotRunning);   //同步基元變量
if (!isNotRunning)  // 如果不是未運行狀態
{
   MessageBox.Show("程序已在運行");
   Environment.Exit(1);
}
MessageBox.Show("歡迎使用本軟件");

示例2

bool isAppRunning = false;
//設置一個名稱為進程名的互斥體
Mutex mutex = new Mutex(true, System.Diagnostics.Process.GetCurrentProcess().ProcessName, out isAppRunning);
if (!isAppRunning)
{
    MessageBox.Show("程序已運行,不能再次打開!");
    Environment.Exit(1);
}
MessageBox.Show("歡迎使用本軟件");


免責聲明!

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



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