【发布时间】:2013-05-15 19:47:23
【问题描述】:
首先,我已经阅读了很多关于这个问题的信息,但我并不清楚。
我正在开发一个 WPF 应用程序,它意味着从数据库、本地/远程文件、Web 服务等加载大量信息。假设,这些数据被加载到数据网格和这种控件中。
我的应用运行良好,但数据加载过程会产生糟糕的用户体验。例如,我将重点放在主窗口,它请求大量数据,因此加载并显示在网格中需要 2-3 秒。
当我第一次执行它时,我真正想在我的应用程序中看到的是,GUI 立即加载,然后让数据加载工作,在网格上显示微调器、等待对象或其他任何东西,直到这些进程(异步?) 已加载。
在这种情况下(在我的测试中),无论加载数据的顺序(我的意思是在代码中)是在哪里进行的:在构造函数内部,在几个事件的末尾(初始化、加载等) ,在 ShowDialog 指令之前的 Init 方法中... GUI 窗口在我的网格加载内容之前不会出现。
我想我应该处理线程,一个用于 GUI,另一个异步用于加载数据,但我已经用 Dispatcher、Delegates 等进行了一些测试,但没有成功。
综上所述,目标是尽可能快地加载 GUI,然后加载数据并刷新 GUI。
现在我有点困惑,我阅读了有关线程、调度程序等的问题,但我不知道它们是否适用于我的需求。希望你能告诉我要走的路。
问候, 博尔哈。
【问题讨论】:
-
我懒得看你在这里写的所有东西。而是发布一些相关代码
-
BackgroundGround worker 和优先级绑定。并清理问题。
-
主要解决方案是避免使用大数据集(毕竟,它是一个 GUI,U 代表用户)。第二种选择:从一个最小填充的虚拟机开始,然后从一个线程更新列表(observables)。
-
您是否在您的
DataGrids上启用了Visualization
标签: c# wpf database user-interface parallel-processing