【发布时间】:2015-11-10 10:24:24
【问题描述】:
我有一个基于 PRISM 6.1.0 的 WPF 项目 Shell 将 TabControl 公开为“MainRegion”。 我需要显示几个从数据库加载数据的视图。数据加载过程需要时间,并且 UI 保持冻结状态。 我试过像这样运行这个procedd async
await Task.Run(() =>
{
RegionManager.RequestNavigate(RegionNames.MainRegion, "FirstView", parameters);
RegionManager.RequestNavigate(RegionNames.MainRegion, "SecondView", parameters);
....
RegionManager.RequestNavigate(RegionNames.MainRegion, "LastView", parameters);
});
但是什么都没有发生,UI 保持冻结状态,直到最后一个视图被加载,然后才在 TabControl 中显示所有视图...
有没有办法异步加载视图?
【问题讨论】:
-
除了Brian所说的,当一个进程需要很长时间并且UI线程需要在进程运行时保持响应时,将长时间运行的进程放在单独的线程上的最常见方法。在 WPF 中,主要使用的技术是 Backgroundworker。 Backgroundworker 主要用于多线程应用程序。数据加载时需要集成 Busyindicator,Busyindicer 自带 WPF 扩展工具包。
标签: c# wpf asynchronous prism