Веб-клиент Silverlight вопрос о загрузке строки - PullRequest
0 голосов
/ 13 ноября 2010

Я пытаюсь собрать простую программу чтения RSS-каналов в Windows Phone 7, но я пытаюсь понять, как работает асинхронная модель.

У меня есть вспомогательный класс, который, когда я передаю его, URL будет анализировать, создавать объект ViewModel и возвращать его. Так что я пытаюсь достичь этого:

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

В методе loadfeed я бы сделал объект webclient и собрал FeedViewModel. Однако, поскольку DownloadStringAsync WebClient является асинхронным, а результат возвращается в другой метод, я не могу понять, как я могу вернуть FeedViewModel из моего метода LoadFeed.

Будем благодарны за любые примеры или ссылки на посты в блоге. Я немного погуглил, но не могу найти примеров того, как бы я подошел к этой проблеме.

Ответы [ 2 ]

0 голосов
/ 15 ноября 2010

Вы не можете вернуть ViewModel из вашей функции LoadFeed, потому что, как вы обнаружили, вызов асинхронный.

У вас есть несколько вариантов, например.Вы могли бы:

  • сделать метод LoadFeed нестатичным и поместить его в класс (например, FeedRetriever)
  • в классе FeedRetriever представить событие (или команду) "FeedLoaded "
  • в вашем репозитории ViewModel подпишитесь на это событие / команду и возьмите ViewModel в обработчике
0 голосов
/ 13 ноября 2010

Вам потребуется настроить обработчик событий WebClient DownloadStringCompleted для обработки RSS-канала.Обратите внимание, что WebClient возвращается в потоке пользовательского интерфейса, и вы защищены от исключений между потоками.Вот фрагмент кода, который входит в метод LoadFeed -

WebClient wc = new WebClient();
wc.DownloadStringCompleted += new DownloadStringCompleteEventHandler(DownloadSettingsComplete);
wc.DownloadStringAsync(uri);

Существует два набора статей, которые помогут вам в создании программы чтения RSS -

  1. Юджин Чайкин создал простую программу чтения RSS , в которой используется WebClient.
  2. Деннис Делимарски написал статью из двух частей о создании программы чтения RSS - часть 1 , часть 2

HTH, индифромоз

...