如何在进度条c#按取消按钮时停止程序

时间:2011-09-01 13:06:57

标签: c# winforms encryption progress-bar cancel-button

我正在尝试创建一个进度条形式加载并在加载时,如果我按下取消按钮,整个应用程序将停止它正在做的任何事情。

以下是调用进度条表单的代码。我想知道有人可以帮忙解决这个问题吗?

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 个答案:

答案 0 :(得分:2)

您应该使用BackgroundWorker代替System.Threading.Thread

答案 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();
}