statusbar.cs
在加载StatusBar表单时,我调用了backgroundWorker1.In Worker1。在backgroundWorker1.DoWork
中,我调用了Login(Username, Password);
函数,该函数也在相同的statusbar.cs
文件中。
private void StatusBar_Load(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerCompleted += (o, args) =>
{
Close();
};
backgroundWorker1.DoWork +=
(o, args) =>
{
Login(Username, Password);
};
backgroundWorker1.RunWorkerAsync();
}
Login(Username, Password)
{
if(Authenticated)
{
MessageBox.Show("Success");
//do some process
}
else
{
MessageBox.Show("Failed...");
return;
}
}
我的问题是进度条正在加载,并且在我关闭Messagebox
.Once之前一直在显示。单击messagebox
中的OK按钮后,进度条消失。一旦messagebox
加载/显示,我需要隐藏进度条。我尝试将backgroundWorker1.CancelAsync();
放在messagebox
之前对我无效。
我需要关闭进度条,一旦消息框appear.Is它有可能强行终止backgroundworker1
。
发布于 2014-10-01 01:47:13
问题是,后台工作者的CancelAsync
方法只是在另一个线程中工作的进程中设置了一个变量。这样进程必须检查该变量,并在其设置为false时停止该操作。此变量位于DoWorkEventArgs
中,名为Cancel
。
如果您不能控制您想要停止的操作的流程,那么我建议使用经典的Thread
类。Thread.Abort
方法引发一个ThreadAbortException
并强制线程。停下来。
https://stackoverflow.com/questions/26124689
复制相似问题