Silverlight и обратные вызовы в потоках без пользовательского интерфейса - PullRequest
4 голосов
/ 12 ноября 2009

Позволяет ли Silverlight обратный вызов в потоке, не связанном с пользовательским интерфейсом, после выполнения асинхронной задачи (например, прослушивания события или сетевого запроса)?

Предположим, что я не создал собственных тем.

Спасибо, Руи

Ответы [ 2 ]

6 голосов
/ 12 ноября 2009

Да, асинхронная задача часто (если даже не всегда) выполняет обратный вызов в потоке, отличном от потока пользовательского интерфейса. Следовательно, существует свойство Dispatcher для всего, что имеет пользовательский интерфейс (и даже того, что не имеет). Вы должны убедиться, что код, который должен выполняться в пользовательском интерфейсе, вызывается в потоке пользовательского интерфейса.

К сожалению, очень мало документации о том, что можно и нельзя изменять из потока, не являющегося пользовательским интерфейсом, скорее всего, потому что это может измениться от одной версии к другой.

2 голосов
/ 12 ноября 2009

Если вы следуете шаблону MVVM и делаете асинхронный вызов WCF в своей модели представления (потому что все вызовы являются синхронизированными в Silverlight), обратный вызов будет отключен, даже если вы оставите свою текущую страницу в приложении навигации, это может быть раздражает, если ваш обратный вызов перенаправляет на другую страницу в случае успеха!

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