首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在.net 4中终止后台工作者

在.net 4中终止后台工作者
EN

Stack Overflow用户
提问于 2014-09-30 23:33:49
回答 1查看 109关注 0票数 1

statusbar.cs

在加载StatusBar表单时,我调用了backgroundWorker1.In Worker1。在backgroundWorker1.DoWork中,我调用了Login(Username, Password);函数,该函数也在相同的statusbar.cs文件中。

代码语言:javascript
运行
复制
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

EN

回答 1

Stack Overflow用户

发布于 2014-10-01 01:47:13

问题是,后台工作者的CancelAsync方法只是在另一个线程中工作的进程中设置了一个变量。这样进程必须检查该变量,并在其设置为false时停止该操作。此变量位于DoWorkEventArgs中,名为Cancel

如果您不能控制您想要停止的操作的流程,那么我建议使用经典的Thread类。Thread.Abort方法引发一个ThreadAbortException并强制线程。停下来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26124689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档