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


留言

熱門文章