Silverlight webclient downloadstringasync问题

时间:2010-11-13 15:50:25

标签: silverlight asynchronous windows-phone-7 webclient

我正在尝试在Windows Phone 7中整理一个简单的RSS提要阅读器,但我很难理解异步模型是如何工作的。

我所拥有的是一个帮助程序类,当我传递它时,URL将解析并构建一个ViewModel对象并将其返回。所以我想要实现的是:

public static class FeedHelper
{
   public static FeedViewModel LoadFeed(string url)
   {
      //parse rss feed and return view model
   }
}

在loadfeed方法中,我将创建一个webclient对象并构建FeedViewModel。但是因为WebClient的DownloadStringAsync是异步的并且结果返回到另一个方法,所以我无法弄清楚如何从LoadFeed方法返回FeedViewModel。

任何关于博客文章的示例或链接都将受到赞赏。我已经做了很多谷歌搜索,但找不到任何我将如何处理这个问题的例子。

2 个答案:

答案 0 :(得分:0)

您需要设置WebClient的{​​{1}}事件处理程序来处理RSS源。请注意,DownloadStringCompleted在UI线程上返回,您可以避免跨线程异常。以下是进入LoadFeed方法的代码片段 -

WebClient

有两套文章可以帮助您建立RSS阅读器 -

  1. Eugene Chaikin has built a simple RSS reader使用WebClient。
  2. Dennis Delimarsky有两篇关于构建RSS阅读器的文章 - part 1part 2
  3. HTH,indyfromoz

答案 1 :(得分:0)

您无法从LoadFeed函数返回ViewModel,因为正如您所发现的那样,该调用是异步的。

你有几个选择,例如。你可以:

  • 使LoadFeed方法非静态并将其放入类中(例如FeedRetriever)
  • FeedRetriever类中的
  • 公开事件(或命令)“FeedLoaded”
  • 在您的ViewModel存储库中
  • 订阅该事件/命令并在处理程序中使用ViewModel