C # Проблема с настройкой содержимого метки в приложении WPF из отдельной темы - PullRequest
2 голосов
/ 31 октября 2010

У меня есть окно с меткой (player1).У меня также есть класс, который асинхронно собирает данные в фоновом режиме внутри потока.Когда эти данные будут собраны, я хочу изменить содержание моего ярлыка.Поскольку метка была создана пользовательским интерфейсом, и я пытаюсь редактировать ее из другого потока, я попытался использовать Dispatcher.Однако, после нескольких часов попыток и разных примеров, я не могу заставить его работать.В наиболее простой форме ниже метод dispatchP1 изменяет значение player1 при вызове из моего главного окна.Тем не менее, это не работает при вызове из моего класса.Кроме того, я не получаю сообщение об ошибке или что-нибудь.

public delegate void MyDelegate();

public void dispatchP1()
 {
 player1.Dispatcher.BeginInvoke(new MyDelegate(p1SetContent));
 }

public void p1SetContent()
 {
 player1.Content = "text";
 }

Любая помощь будет оценена.

Ответы [ 2 ]

1 голос
/ 01 ноября 2010

Вы знаете, что можете использовать анонимных делегатов?

player1.Dispatcher.BeginInvoke( () =>
{
   player1.Content = "text";
});
1 голос
/ 31 октября 2010

Этот код не кажется особенно проблематичным - но WPF имеет привычку проглатывать исключения.В вашем App.xaml вы можете обработать событие DispatcherUnhandledException и поместить туда точку останова, чтобы определить, действительно ли оно вызывает исключение.

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