【问题标题】:How can I update a winform asynchronously?如何异步更新winform?
【发布时间】:2011-03-29 02:38:39
【问题描述】:

我有一个 winform,还有一个与乐高 nxt 积木的蓝牙连接。现在我想每秒更新一次表单以读取传感器或电池电量。但是如果我为此启动一个新线程,当线程想要设置标签文本时,我会出现一个无效的线程操作异常。

谁能帮帮我?

【问题讨论】:

    标签: c# winforms multithreading delegates asynchronous


    【解决方案1】:

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

    Dispatcher.Invoke

    【讨论】:

    • 请注意,他使用的是 WinForm 而不是基于 WPF 的。
    • 你是对的。我错过了。我已经卡在 Silverlight/WPF 模式一段时间了 :)
    【解决方案2】:

    您只能从创建标签的线程更新标签,并且从外观上看,您正试图从工作线程更新它。

    查看Control.BeginInvoke() 方法并从那里获取。还有其他方法,例如 Control.EndInvokeControl.Invoke 以及属性 Control.InvokeRequired,在这种情况下也会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-24
      • 1970-01-01
      • 1970-01-01
      • 2021-08-27
      • 2013-07-20
      • 2020-02-11
      • 1970-01-01
      • 2023-01-12
      相关资源
      最近更新 更多