2009-08-07 1 views
0

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

Это объект 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");   
    } 

ответ

0

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

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

+0

Вы не хотели бы помогать мне с кодом, который бы вы? ;) – LSTayon

+0

N/M Это то, что я использовал: queryTimer.Dispatcher.Invoke (DispatcherPriority.Normal, новый ThreadStart (делегат {OnPropertyChanged ("Загрузка");})); Я в классе, поэтому я не могу использовать этот вызов. Когда я перехожу через код, после первой диспетчеризации вдова становится черной, а затем обновляется после того, как я выхожу из таймера ... – LSTayon

 Смежные вопросы

  • Нет связанных вопросов^_^