如何异步更新winform?

时间:2010-08-12 18:51:58

标签: c# winforms multithreading delegates asynchronous

我有一个winform,以及一个lego nxt砖的蓝牙连接。现在我想每秒更新一次表格以读取传感器或电池电量。但是,如果我为此启动一个新线程,那么当线程想要设置标签文本时,我会遇到无效的线程操作异常。

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:6)

您只能从创建标签的线程以及您尝试从工作线程更新标签的外观更新标签。

查看方法Control.BeginInvoke()并从那里获取它。还有其他方法,例如Control.EndInvokeControl.Invoke以及属性Control.InvokeRequired,这些方法也会在此上下文中提供帮助。

答案 1 :(得分:0)

您需要将标签更新调回主线程

请参阅Dispatcher.Invoke