如何从多个源异步获取数据?

时间:2013-04-16 11:41:58

标签: c# xaml asynchronous windows-8

我正在使用C#和XAML开发一个Windows 8应用程序,我在一个页面中获取了大量数据。因此,应用程序需要花费很多时间来加载,因为它需要等到所有数据都存在然后才会为用户显示它们。

我最想要的是以下内容:我的Gridview中最多有15个组,每组有大约10个区块。目前我需要等到所有数据加载然后显示所有组,这是因为每个组除了其瓦片之外还需要花费很多时间来获取和解析一些RSS源。那么有没有办法逐步显示组,当group1完成加载时显示然后添加group2,等等... \ 希望现在的问题更加清晰。 提前谢谢!

2 个答案:

答案 0 :(得分:1)

这个问题是如此模糊,但基本原理说,你必须使用某种带有回调的工作人员,让你知道什么时候工作准备好,或者在这种情况下从数据中取出数据资源。你可以使用线程,但可能会有点复杂。

看看这里:

http://elegantcode.com/2009/07/03/wpf-multithreading-using-the-backgroundworker-and-reporting-the-progress-to-the-ui/

您还可以使用新的async / await关键字,这使得它极其简单:

http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx

所以说你有几个后台工作流程,你可以在每个完成后检查,使用一些计数器,检查所有后台进程是否完成并更新用户界面。

答案 1 :(得分:1)

您可以使用“任务”从UI线程中获取数据,并在数据进入时使用调度程序更新UI。

http://msdn.microsoft.com/en-ca/library/dd537609.aspx

创建和使用任务非常简单。

 var task = new Task(() => Console.WriteLine("Running a task."));
 task.Start();