2010年8月4日 星期三

當非正常關閉程式時(如:登出或關機),讓程式完成最後的動作(如:釋放資源或資料回存)

有時候使用者並不會以標準的程序來結束程式
如直接按下電源鈕或按下開始->電腦關機來結束windows系統
或者是使用工作管理員來結束程式

此時,我們希望在程式結束前能執行一些必要的程式碼,例如釋放資源或儲存設定之類的
這時就可以使用下面兩個事件來處理,將這些必要的程式碼放在事件處理函式內

當使用者登出或結束windows時,可以使用SystemEvents.SessionEnding 事件來處理
Namespace為 Microsoft.Win32

當使用者使用工作管理員來結束程式時,可以使用Application.ThreadExit 事件來處理
Namespace為 System.Windows.Form

3 則留言:

  1. EventsThreadShutdown 在聆聽系統事件的執行緒終止前發生。
    PowerModeChanged 當使用者休眠或繼續系統時發生。

    回覆刪除
  2. 之前的做法是判斷 FormClosing事件的e.CloseReason 是不是CloseReason.WindowsShutDown

    回覆刪除