页面加载很卡
我的一个应用程序有一个用来管理原材料库的页面,如图1所示,这是一个Pivot页面,每个Pivot项列出一类原材料 。整个Pivot页面绑到一个ManageIngredientsViewModel对象,每个Pivot项绑到一个IngredientGroupViewModel对象,这些 IngredientGroupViewModel对象是在运行时根据原材料库的数据创建的。
图 1
目前的做法是在 ManageIngredientsViewModel的构造函数里通过LINQ to SQL加载数据,然后创建相应的IngredientGroupViewModel对象,如代码1所示。这种 同步加载数据的做法很常见,也很直观,不过,如果数据比较多,并且伴随磁盘或者网络的访问,就有可能导致页面加载很卡。
计算">
代码 1
我希望异步加载数据,并且只在用户查看某个Pivot项时才加载它的数据,这样可以确保页面保持响应,同时又能避免加载 多余的数据。在这篇文章里,我们将会以这个应用程序为背景探讨如何通过任务并行库(Task Parallel Library,TPL)实现这些效果。
启动任务
首先,我不希望一开始就加载所有数据,因此把前面的代码1换成下面的代码2,新的代码负责创建一组空的 IngredientGroupViewModel对象。由于Pivot控件的ItemsSource属性和ManageIngredientsViewModel对象的IngredientGroups属性绑定, Pivot控件会自动创建一组空的Pivot项。
代码 2
时间: 2024-09-14 13:57:06