由于众多原因,我无法在后台工作程序中运行代码的主要部分,我可以在后台工作程序中运行“加载”对话框,但需要在执行主代码部分后关闭对话框。我对以下内容表示赞赏,但我不确定如何在代码执行后强行关闭后台工作程序:
LoaderWorker = new BackgroundWorker();
//Loading is the Form
Loading Loader = new Loading("Daten Exportieren");
LoaderWorker.DoWork += (s, args) =>
{
//Show Loading Dialog
Loader.Show();
};
ExecuteMainTasks();
//Here i need to stop the backgroundworker after the method above is complete.
对于后台工作者是否有解决方案,或者我应该使用不同的方法来确保我不锁定加载器的UI线程。记住......我无法在后台工作程序中执行主代码,因此必须稍微向后管理。
感谢。
答案 0 :(得分:0)
Control.Invoke
Control.BeginInvoke
(Windows窗体)
或
Disopatcher.Invoke
Dispatcher.BeginInvoke
(WPF)
或
CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync
(WinRT)
从后台工作程序调用它将在UI线程中执行传递的lambda / delegate。只需从后台工作人员那里以这种方式执行进度/完成通知。
因此,在UI线程中显示对话框,然后启动后台工作程序,从中可以使用这种方式在UI线程中执行代码。
确保在用户cacels / close对话框时同步停止后台工作程序。