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("歡迎使用本軟件");