C#sendmessage的用法?winform如何切换到ui线程?

42分钟前阅读1回复0
路人甲
路人甲
  • 管理员
  • 注册排名2
  • 经验值283005
  • 级别管理员
  • 主题56601
  • 回复0
楼主
SendMessage 是在当前线程里等待返回,如果处理的也在当前线程,winform如何切换到ui线程?可以通过使用控件的Invoke或BeginInvoke方法来切换到UI线程。这些方法允许在UI线程上执行委托,从而确保在更新UI时不会发生线程冲突。.net 2005之后线程不允许直接操作UI,比如下面的datareflash是线程里的一个方法,它需要刷新页面控件的数据。

C#sendmessage的用法?

SendMessage 是在当前线程里等待返回,如果处理的也在当前线程,当然就卡死了。解决方案:

C#sendmessage的用法?winform如何切换到ui线程?

1、C# 自身有代替SendMessage的简化直观的方案。就是各种Invoke/BeginInvoke,如果没必要,千万别使用消息方法。

winform如何切换到ui线程?

在WinForms中,可以通过使用控件的Invoke或BeginInvoke方法来切换到UI线程。这些方法允许在UI线程上执行委托,从而确保在更新UI时不会发生线程冲突。

.net 2005之后线程不允许直接操作UI,否则会报错,但是可以用委托的方式来解决。

比如下面的datareflash是线程里的一个方法,它需要刷新页面控件的数据,那么就可以定义一个委托来实现,参考大妈如下:

在WinForm中,可以使用Control类的Invoke或BeginInvoke方法切换到UI线程。Invoke方法会同步执行指定的委托,而BeginInvoke方法会异步执行指定的委托。

这两个方法都接受一个委托作为参数,该委托包含需要在UI线程上执行的代码。

0
回帖

C#sendmessage的用法?winform如何切换到ui线程? 期待您的回复!

取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息