在C# WinForm中如何使當前應用程序只允許啟動一個實例(轉)


我們在創建C# WinForm應用程序時,有時需要限制用戶在同一時間只允許啟動一個應用程序實例,例如安裝程序包、系統掃描工具等等。當應用程序的一個實例已經處於運行狀態時,如果用戶企圖再啟動一個實例,則給用戶一個提示並終止該實例。

    這個其實很簡單!我們知道,WinForm應用程序都有一個程序運行時的入口點,這點與WebForm應用程序不同,后者需要在任意一個可訪問的Page中設置允許用戶訪問的權限,而WinForm應用程序只需要處理好程序的入口點就可以了。因此我們需要在Program class的Main函數中進行判斷和處理。代碼如下: 

 

  1. [STAThread] 
  2. static void Main() 
  3.     bool createNew; 
  4.     using (System.Threading.Mutex m = new System.Threading.Mutex(true, Application.ProductName, out createNew)) 
  5.     { 
  6.         if (createNew) 
  7.         { 
  8.             Application.EnableVisualStyles(); 
  9.             Application.SetCompatibleTextRenderingDefault(false); 
  10.             Application.Run(new Form1()); 
  11.         } 
  12.         else 
  13.         { 
  14.             MessageBox.Show("Only one instance of this application is allowed!"); 
  15.         } 
  16.     } 

 

 

 

主要使用了Sytem.Theading.Mutex對象,該對象用於解決多線程操作中的互斥問題,有關它的詳細介紹讀者可以參考MSDN。

http://msdn.microsoft.com/zh-cn/library/bwe34f1k(VS.80).aspx


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM