c# WinForm 程式單一執行 避免重複執行
今天在測試程式時,發生了手殘事件,程式被重複開啟,要怎麼避免重複執行的狀況呢?
來介紹一種簡單的方法,就是Mutex,可以同步處理原始物件,該物件也可用於進行處理序
之間的同步處理。
現在來上一個範例:
public static Queue<string> Messages = new Queue<string>();
static string appGuid = "{8604F243-A7AE-45C9-AB4C-D129FEA9FEE9}";
static void Main(string[] args)
{
using (Mutex m = new Mutex(false, "Global\\" + appGuid))
{
//另一份已執行
if (!m.WaitOne(0, false))
{
MessageBox.Show("程式已在執行中");
return;
}
else
{
if (args.Any())
{
Messages.Enqueue(args[0]);
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
這樣程式就會防呆,可以避免手殘重複執行的問題
參考資料:
https://dotblogs.com.tw/AlexWang/2016/09/22/175741
https://learn.microsoft.com/zh-tw/dotnet/api/system.threading.mutex?view=net-7.0
留言
張貼留言