2009-04-08 104 views
0

我得到這個異常線程問題

System.InvalidOperationException了 用戶代碼未處理消息=「該 調用線程不能訪問此 對象,因爲不同的線程擁有 它。」

每當我運行下面的代碼

public partial class MainScreen : Window 
{ 
     Timer trm; 

     public MainScreen() 
     { 
      InitializeComponent(); 

      trm = new Timer(1000); 
      trm.AutoReset = true; 
      trm.Start(); 
      trm.Elapsed += new ElapsedEventHandler(trm_Elapsed); 
     } 

     void trm_Elapsed(object sender, ElapsedEventArgs e) 
     { 
      lblTime.Content = System.DateTime.Now; 
     } 
} 

人的任何解決方案...我不好WANN出來吧:(

回答

3

使用DispatcherTimer代替:

public partial class MainScreen : Window{ 
DispatcherTimer tmr;  
public MainScreen() { 
InitializeComponent(); 
tmr = new DispatcherTimer(); 
tmr.Tick += new EventHandler(tmr_Tick); 
tmr.Start();  
} 
void tmr_Tick(object sender, EventArgs e) { 
    lblTime.Content = System.DateTime.Now; 
} 
} 
0

任何時候您修改Windows控件,你必須在這樣做UI線程(創建該控件的一個)。

的很多細節見this question

0

簡而言之,應該使用Dispatcher.Invoke方法來更新UI元素。