Вызов потока пользовательского интерфейса из BeginGetResponse в Silverlight - PullRequest
0 голосов
/ 29 октября 2010

Я знаю, как это делать в повседневной жизни .NET, но я не в восторге от разработки WP7 и Silverlight.Ответ HttpWebRequest должен быть выполнен асинхронным, круто с этим, но как я могу вызвать поток пользовательского интерфейса из асинхронного метода?

т.е.

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create('http://stackoverflow.com');
request.BeginGetResponse(new AsyncCallback(onRequestComplete), request);

Я вызываю это в классе,который имеет установленный делегат.Я хотел бы вызвать делегата в потоке пользовательского интерфейса из onRequestComplete .Я знаю, что могу сделать это наоборот, вызвать делегата, но я чувствую, что это будет чище.

Заранее спасибо

1 Ответ

1 голос
/ 29 октября 2010

Вам необходимо иметь доступ к соответствующему Dispatcher, а затем вызвать Dispatcher.BeginInvoke.

Любые элементы пользовательского интерфейса получат доступ к диспетчеру системы.через свойство Dispatcher.Если вам нужно сделать это тестируемым способом, вы можете абстрагировать диспетчер в интерфейс IDispatcher с реализацией, чтобы использовать обычную для производства и что-то вроде SameThreadDispatcher в тестах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...