WPF - Event Threading, вопрос обновления GUI - PullRequest
0 голосов
/ 08 августа 2009

Я пытаюсь отправить два события в главное окно, чтобы показать анимацию, которая позволит пользователю узнать, что я обновляю данные.

Это объект ObservableCollection, поэтому OnPropertyChanged немедленно выбирается привязками в главном окне. Спит только там, чтобы пользователь мог видеть анимацию.

Однако первый OnPropetyChanged никогда не виден. Я предполагаю, что это потому, что мы находимся в одном потоке, и timer_Tick должен завершиться до обновления GUI. Есть предложения? В земле VB6 мы будем использовать DoEvents или Form.Refresh.

Спасибо!

private void timer_Tick(object sender, EventArgs e)
    {
        Loading = "Before: " + DateTime.Now.ToString();
        OnPropertyChanged("Loading");

        LoadData();
        Thread.Sleep(1000);

        //Loading = Visibility.Hidden;
        Loading = "After: " + DateTime.Now.ToString();
        OnPropertyChanged("Loading");           
    }

1 Ответ

0 голосов
/ 08 августа 2009

Ну, в C # есть Application.DoEvents , но я бы не рекомендовал использовать его, если в этом нет крайней необходимости.

Вы пытались обернуть ваш вызов OnPropertyChanged в Dispatcher.Invoke ?

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