2010-03-23 95 views
4

我編寫了一個C#Windows窗體應用程序,而不是一個服務(僅在用戶登錄並具有圖形用戶界面時使用),後臺線程正在運行在無限循環中。C#Windows應用程序阻止Windows關閉/註銷

當我嘗試關閉Windows(7)時,它告訴我程序正在阻止它關閉或註銷並詢問我是否要強制關閉。

現在,有沒有可能讓我的程序意識到(獲取處理程序)的Windows嘗試退出它或註銷?

所以,我需要的是當Windows嘗試退出時讓應用程序實現。

在此先感謝。

編輯:謝謝你的好建議!如果它有一個CANCEL事件處理程序,它是否有可能在表單關閉事件中使用該想法?

+1

你可以通過點擊右上角的關閉按鈕來退出你的應用程序嗎?如果是這種情況,應用程序不應阻止關機。否則,您需要先處理該情況。 – 2010-03-23 08:37:44

回答

10
public Form1() 
{ 
    InitializeComponent(); 

    this.FormClosing += new FormClosingEventHandler(Form1_FormClosing); 
} 

void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    // Or any of the other reasons suitable for what you want to accomplish 
    if (e.CloseReason == CloseReason.WindowsShutDown) 
    { 
     //Stop your infinite loop 
    } 
} 
+0

謝謝。這真的幫助了我。我刪除了取消處理程序,並使用這個,只有當它是Windows關閉它退出的應用程序。 – arik 2010-03-23 12:44:34

5

你調用線程「後臺線程」,但它有IsBackground = true;
系統只會停止執行的線程。

+0

+1 - 這正是我的想法。 – 2010-03-23 09:11:13

相關問題