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