在 C# 中,Mutex 是用來避免多個程式或執行緒同時訪問共享資源,Mutex 可以確保只有一個執行緒或處理程序存取。
我們可以很簡單的使用 Mutex 確保本程式只有被執行一次。啟動時使用相同的名稱建立 Mutex ,並檢查是否是新建立的,如果不是則代表程式已經被啟動了。最後在程式結束時記得釋放 Mutex :
要驗證 Mutex 可以下載 Sysinternals Suite,執行下面的指令,就可以找到剛剛建立的 Mutex 名稱了:
參考資料:
Microsoft.Learn - Mutex Class
我們可以很簡單的使用 Mutex 確保本程式只有被執行一次。啟動時使用相同的名稱建立 Mutex ,並檢查是否是新建立的,如果不是則代表程式已經被啟動了。最後在程式結束時記得釋放 Mutex :
const string mutexName = "Global\\_RUYUT_MUTEX";
var procMutex = new System.Threading.Mutex(true, mutexName, out var result);
if (!result)
{
Console.WriteLine("程式已在執行中,不可重複執行");
return;
}
// TODO: 其他程式碼
// 釋放
procMutex.ReleaseMutex();
要驗證 Mutex 可以下載 Sysinternals Suite,執行下面的指令,就可以找到剛剛建立的 Mutex 名稱了:
.\handle.exe -a | Select-String -Pattern Mutex
304: Mutant \BaseNamedObjects\_RUYUT_MUTEX
參考資料:
Microsoft.Learn - Mutex Class
感謝教學~
回覆刪除