使用互斥體啟動帶有使用者通知的單一實例應用程式
本文示範如何使用互斥體來防止應用程式的多個實例同時運行,更重要的是,如何在實例已經運行時通知使用者。
互斥體方法
解決方案的核心涉及使用互斥(互斥)物件。 互斥體充當鎖;一次只有一個程序可以獲得它的所有權。 嘗試建立已存在的互斥體將會失敗,使我們能夠偵測另一個實例是否正在運作。
使用者通知的程式碼增強
提供的程式碼片段使用Mutex.OpenExisting
來檢查正在運行的實例。 為了改善這一點,我們新增了使用者通知:
<code class="language-csharp">static void Main(string[] args) { bool createdNew; Mutex m = new Mutex(true, AppDomain.CurrentDomain.FriendlyName, out createdNew); if (!createdNew) { // Notify the user that an instance is already running. MessageBox.Show("An instance of this application is already running.", "Application Already Running", MessageBoxButtons.OK, MessageBoxIcon.Information); return; // Exit the new instance. } else { // Continue application execution. } // ... rest of your application code ... m.Dispose(); // Release the mutex when the application closes. }</code>
此增強型程式碼利用 out createdNew
建構子的 Mutex
參數。 如果createdNew
為false
,則表示互斥體已經存在,表示另一個實例正在運作。 MessageBox
通知用戶,新實例使用 return
正常退出。 最後,m.Dispose()
呼叫可確保正確的資源清理。 此方法提供了一種清晰且用戶友好的方式來處理多個應用程式啟動。
以上是如何防止我的應用程式出現多個實例並通知使用者現有實例?的詳細內容。更多資訊請關注PHP中文網其他相關文章!