Я создал свой собственный сервис WCF и смог успешно общаться с ним через мой клиент Silverlight. Я столкнулся с интересной проблемой моих асинхронных обратных вызовов. Когда вызывается мой обратный вызов, я не могу обновить какие-либо элементы управления пользовательского интерфейса с ужасным недопустимым кросс-поточным доступом
Вот как выглядит моя функция обратного вызова
private void GetTimeCallBack( object sender, Talk.ClientBase<IService>.ClientEventArgs e )
{
lblDisplay.Text = e.Object.ToString();
}
Быстрый поиск в Google показал, что я должен сделать это вместо этого.
private void GetTimeCallBack( object sender, Talk.ClientBase<IService>.ClientEventArgs e )
{
Dispatcher.BeginInvoke( () => lblDisplay.Text = e.Object.ToString() );
}
Теперь все работает нормально, но я не ожидал, что мой обратный вызов будет запущен в другом потоке. Мне всегда нужно будет использовать класс Dispatcher для того, чтобы что-то изменить в моем классе, или это просто ограничено элементами пользовательского интерфейса? Я совсем не знаком с классом Dispatcher, поэтому я хочу понять его подробнее.