代码改变世界

.NET下跨线程访问Control。

  Colin Han  阅读(2327)  评论(1编辑  收藏  举报
在.NET中,一个Control是属于一个特定的线程的。如果要在另外一个线程中访问这个Control的Handler(其实,Control的很多属性都会访问到Control的Handler)。.NET 或 操作系统会抛出一个异常。

但是,某些时候我们必须这样使用。微软已经在.NET Framework中为我们包装好了方法,供我们使用:
public Object Control.Invoke (
Delegate method,
params Object[] args
)

Visual Basic (Declaration)

Public ReadOnly Property InvokeRequired As Boolean


Visual Basic (Usage)

Dim instance As Control Dim value As Boolean  value = instance.InvokeRequired 


public bool Control.InvokeRequired { get; }

通过InvokeRequired属性,我们可以判断特定的Control是否属于当前线程。如果该属性返回真,我们就必须使用Control.Invoke方法,将访问逻辑发送到Control所属的线程里运行。


powered by performancing firefox

编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示