2015-05-05 56 views
0

「簡單」的問題到「流氓傢伙那裏」。我的程序在單個任務中啓動SQL備份過程,用於每個數據庫的任何備份。 第一個任務完成後,所有任務都會逐一開始。但是,當SQL備份命令轉到SQL服務器時,比寫入備份文件的過程花費更多時間,那麼任務需要完成。此時,用戶可以關閉該程序並跳過後端處理以處理大數據庫文件。 有沒有辦法阻止我的程序關閉,直到每一個備份文件完全寫入硬盤?等到「寫完」

+0

您是否嘗試過將關閉EventHandler添加到您的窗口,並在那裏檢查任務是否仍在運行? – Staeff

+0

當用戶關閉窗口時,看看是否還有任何事情尚未完成,如果是,通知用戶並且不要關閉應用程序。 –

+0

您如何建議在用戶發現您的程序拒絕關閉時停止關閉他們的機器?如果你需要*代碼來運行,那麼不要把它放在用戶機器上 - 把它放在你控制的機器上(比如服務器) –

回答

1

您可以處理Window這樣的Closing

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) 
{ 
    if (BackupStillRunning) 
     e.Cancel = true; 
    else 
     e.Cancel = false; 
} 

你應該做的,雖然是詢問用戶是否真的要退出,這樣的事情:

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) 
{ 
    if (BackupStillRunning) 
    { 
     if (MessageBox.Show("The backup is still running, if you close the application, the backup will be cancelled. Do you want to proceed?", "Caption", MessageBoxButton.YesNo) == MessageBoxResult.Yes) 
      e.Cancel = true; 
    } 
    else 
    { 
     e.Cancel = false; 
    } 
} 

簡單不讓用戶關閉應用程序將很快變得令人沮喪。如果你真的不想讓用戶關閉應用程序,至少應該顯示一條消息來解釋原因。由於Damien_The_Unbeliever指出,無法完全阻止應用程序關閉。