【发布时间】:2018-12-22 11:01:23
【问题描述】:
代码正在生成选定目录的可视化树。但由于这可能需要很长时间,我需要在后台线程中执行此操作并且不要冻结 UI。 问题是当我创建 UI 元素时,它不允许我在主 UI 线程之外进行。
BackgroundWorker doMacBk;
doMacBk = new BackgroundWorker();
doMacBk.DoWork += (o, arg) =>
{
Application.Current.Dispatcher.Invoke(new Action(() =>
{
//Making UI elements
}));
}
};
如何在不冻结 UI 的情况下执行此操作?
【问题讨论】:
-
将 WPF 的强大功能与绑定、数据模板和虚拟化结合使用
-
不要在代码后面创建 UI 元素。后台处理请看Asynchronous Programming with Async and Await。
-
使用后台工作程序然后立即调用调度程序没有什么意义。后台工作者的重点是做繁重的非 UI 工作。
标签: c# wpf multithreading user-interface mvvm