C# 中this.Invoke(delegate)与delegate.Invoke()区别

背景

在多线程运行中,想要更改UI控件的属性。一直认为两种方式是一样的,以前也是混着写的,这次翻车了。

this.Invoke(委托实例,参数)

这个是在拥有控件的基础窗口句柄的线程上,用指定的自变量列表执行指定委托。,也就是说通知UI线程处理事件,可跨线程。

委托实例.Invoke(参数)

这个是执行委托,运行在创建委托的线程中,不能跨线程使用。

委托与直接调用类public函数区别

1.相当于用方法作为另一方法参数(类似于C的函数指针)(没体会过优势
2.在两个不能直接调用的方法中作为桥梁,如:在多线程中的跨线程的方法调用就得用委托(常用
3.当不知道方法具体实现什么时使用委托,如:事件中使用委托(常用
4.解耦(应该算结构优化吧

总结

委托中涉及到UI中控件属性更改,则使用this.Invoke,其他情况使用delegate.Invoke

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值