我正在尝试创建一个进度条形式加载并在加载时,如果我按下取消按钮,整个应用程序将停止它正在做的任何事情。
以下是调用进度条表单的代码。我想知道有人可以帮忙解决这个问题吗?
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);
答案 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();
}