2011-09-01 29 views
0

我正在嘗試做一個進度條表單加載和加載時,如果我按下取消按鈕,整個應用程序將停止它正在做的任何事情。如何在進度條上按取消按鈕時停止程序c#

下面是我的代碼調用進度條窗體。我想知道任何人都可以幫忙嗎?

Loading loader = new Loading(); 


    private void lockButton_Click(object sender, EventArgs e) 
    { 
     if (this.ddCheckBox.Checked == false) 
     { 
      if (this.passwordtextBox.Text == "") 
      { 
       MessageBox.Show("Please enter a password!"); 
      } 
      else if (this.retypeTextBox.Text == "") 
      { 
       MessageBox.Show("Please retype password!"); 
      } 
      else if (this.passwordtextBox.Text == this.retypeTextBox.Text) 
      { 
       //details = new Details(); 
       details.SetPassword(this.passwordtextBox.Text); 

       if (this.EncryptionComboBox.Text == "AES - 128 bit" | this.EncryptionComboBox.Text == "AES - 192 bit" | this.EncryptionComboBox.Text == "AES - 256 bit") 
       { 
        this.Hide(); 

        Thread thread = null; 
        thread = new Thread(new ThreadStart(delegate() { loader.dLabel.Text = "Locking Files..."; loader.ShowDialog(); })); 
        thread.Start(); 

        details.SetEncryption(this.EncryptionComboBox.Text); 

回答

2

您應該使用BackgroundWorker而不是System.Threading.Thread

+1

+1同意。後臺工作人員已經在右側建立了取消規定。 –

0

Application.Restart()應該停止它相當不錯;)

在所有的嚴重性,雖然,有的MSDN網站上這樣的東西的信息噸。我會用它來至少了解要搜索的內容。不是說你不知道,但是它有很好的信息來確保你使用正確的術語(如停止與取消)以及其他一些類似的東西。

http://msdn.microsoft.com/en-us/library/aa511486.aspx

如果檢查 http://msdn.microsoft.com/en-us/library/ywkkz4s1.aspx那麼你會發現兩者的真棒資源如何啓動一個後臺工作(這應該用於此),以及如何實現一個取消按鈕。竊取該代碼並將其插入到您的程序中。希望這可以幫助!

編輯:環顧了一下之後,我想你可能想調用看起來有點像這樣從MSDN網站代碼:

private void Cancel_Click(object sender, EventArgs e) 
{ 
    // Cancel the asynchronous operation. 
    this.backgroundWorker1.CancelAsync(); 
}