BackGroundWorker无法正常工作

时间:2013-04-04 14:05:47

标签: .net c#-4.0 telerik wpf-controls backgroundworker

我在WPF应用程序中使用System.ComponentModel.BackGroundWorker。 所以,我正在做的就像吹嘘

我有一个文件浏览器控件和两个按钮,在wpf对话框中称为导入和取消   当用户在文件浏览器控件的帮助下选择文件并单击导入按钮时   ,然后因为应用程序必须从大文本文件中读取数据,因此我显示telerik忙指示符,直到文件被加载,那么当我选择文件路径时我会做什么

创建后台工作程序并分配do_work处理程序

this.backgroundWorkerThread = new BackgroundWorker
    {
      WorkerSupportsCancellation = true
    };
    // when the thread gets starts, call the function to be executed
    this.backgroundWorkerThread.DoWork += (sender,
                                           do_workArgs) =>
    {
      // import all scenarios
      do_workArgs.Result = this.ImportScenarios();
    };

并致电    this.backgroundworker.RunWorkerAsync()

当用户点击取消按钮时,我会做以下事情:

 if (
          (this.backgroundWorkerThread != null)
          &&
          (this.backgroundWorkerThread.IsBusy)
         )
      {
        this.backgroundWorkerThread.CancelAsync();
      }

问题

这个关闭实际上是处理后台工作者但是在do worker方法中,在args.result = import()中分配的方法Scenarios()没有终止,它继续,所以我要找的是当我点击取消按钮整个过程应该终止。在我的情况下,只有后台工作者被处理,但在工作事件处理程序中分配的方法不会中止,所以我想中止该方法以及。任何人都可以向我建议可能的解决方案

0 个答案:

没有答案