使用互斥體改進單一實例應用程式控制
使用互斥體確保應用程式僅運行一個實例是一種標準技術。 讓我們分析範例程式碼並討論改進。
原始程式碼審查:
提供的程式碼使用互斥鎖來防止多個應用程式實例。但是,可以進行增強:
try-catch
區塊,但缺乏特定的異常處理。 需要對互斥體創建或存取失敗進行更強大的錯誤處理。 增強實作:
此改進的程式碼解決了以下缺點:
<code class="language-csharp">static void Main(string[] args) { Mutex mutex = null; bool createdNew; try { mutex = new Mutex(true, AppDomain.CurrentDomain.FriendlyName, out createdNew); } catch (Exception ex) { // Handle mutex initialization errors MessageBox.Show($"Mutex initialization failed: {ex.Message}"); return; } if (!createdNew) { // Another instance is running MessageBox.Show("Another instance is already running. Exiting."); return; // Explicitly exit } else { // This is the first instance // Application logic goes here... // ...ensure mutex is released on exit (see below) } // Ensure the mutex is released even if the application crashes AppDomain.CurrentDomain.ProcessExit += (sender, eventArgs) => { mutex?.ReleaseMutex(); }; }</code>
進一步考慮:
AppDomain.CurrentDomain.ProcessExit
來確保即使在意外終止時也能釋放。 這可以防止資源鎖定。 以上是我們如何使用互斥體改進單一實例應用程式執行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!