0

我在我的 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() 中分配的方法没有终止,它继续,所以我要寻找的是当我点击取消按钮时进程应该终止。在我的情况下,只有后台工作人员被处置,但在工作事件处理程序中分配的方法没有中止,所以我也想中止该方法。任何人都可以建议我可能的解决方案

4

0 回答 0