我得到了这个例外
System.InvalidOperationException是 用户代码未处理Message =“The 调用线程无法访问它 对象,因为不同的线程拥有 它“。
每当我运行以下代码时
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;
}
}
任何解决方案......我非常想要摆脱它:(
答案 0 :(得分: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;
}
}
答案 1 :(得分:0)
每次修改Windows控件时,都必须在UI线程(创建控件的线程)上执行此操作。
有关详细信息,请参阅this question。
答案 2 :(得分:0)
简而言之,您应该使用Dispatcher.Invoke方法来更新UI元素。