[C#] 避免重複開啟應用程式

  • 16766
  • 0

[C#] 避免重複開啟應用程式

在開發Windows Form的時候,

常常會需要限制使用者,

一次只能開啟一個程式,

為了使用上的方便,

寫了一個Class方便Reuse,

 

public class ProcessChecker
    {
        public static bool IsProcessing(ProcessCheckRange type)
        {
            string moduleName = Process.GetCurrentProcess().MainModule.ModuleName;
            string mutexRange = string.Empty;
            bool isCreated = false;

            switch (type)
            {
                case ProcessCheckRange.Global:
                default:
                    mutexRange = "Global\\";
                    break;
                case ProcessCheckRange.Local:
                    mutexRange = "Local\\";
                    break;
            }

            System.Threading.Mutex mutex = new System.Threading.Mutex(true, mutexRange + moduleName, out isCreated);

            return isCreated;
        }        
    }

    public enum ProcessCheckRange
    {
        Global,
        Local
    }

 

使用時只需傳入鎖定範圍是Global或是Local,

即可依據回傳值判斷程式是否已在運行中。

bool isProcessing = ProcessChecker.IsProcessing(ProcessCheckRange.Global);

 

參考資料:

  1. Mutex 建構函式 (Boolean, String, Boolean%)
  2. 如何避免相同的 ConsoleApp 或 WinForm 同時間重複執行