2009-08-07 65 views
0

我想向主窗口發送兩個事件,以便我可以顯示某種動畫,讓用戶知道我正在更新數據。WPF - 事件線程,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,但我不會建議使用它,除非絕對必要的。

您是否嘗試過在Dispatcher.Invoke中打包OnPropertyChanged調用?

+0

你不想幫助我的代碼就可以了嗎? ;) – LSTayon 2009-08-07 22:51:19

+0

N/M 這是我用的: queryTimer.Dispatcher.Invoke(DispatcherPriority.Normal,new ThreadStart(delegate {OnPropertyChanged(「Loading」);})); 我正在上課,所以我無法使用this.Dispatcher調用。 當我單步執行代碼時,在第一次調度之後,寡婦變黑,然後在我離開計時器滴答時間後才刷新... – LSTayon 2009-08-07 23:00:27