2009-04-08 80 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元素。