终止.net 4中的后台工作人员
本文关键字:后台 工作人员 net 终止 | 更新日期: 2023-09-27 18:25:03
statusbar.cs
在加载StatusBar表单时,我调用backgroundWorker1。在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
。一旦单击messagebox
中的OK按钮,进度条就会消失。一旦messagebox
加载/显示,我需要隐藏进度条。我尝试将backgroundWorker1.CancelAsync();
放在messagebox
之前,但对我不起作用。
消息框出现后,我需要关闭进度栏。是否可以强制终止backgroundworker1
。
问题是后台工作程序的CancelAsync
方法,只需在另一个线程中工作的进程中设置一个变量。这样的过程必须检查该变量,并在该变量设置为false时停止操作。此变量位于DoWorkEventArgs
中,并命名为Cancel
。
如果您无法控制要停止的操作的流程,那么我建议使用经典的Thread
类。Thread.Abort
方法引发一个ThreadAbortException
并强制线程。停止。