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