社区
C#
帖子详情
BeginInvoke 问题
jerry_zhang99
2011-03-02 03:45:35
BeginInvoke 一种是基于Control的,另外一种是关于Delegate的BeginInvoke,Control.BeginInvoke 是UI线程用于同步UI界面的一种调用方法,他仍然属于UI线程, Delegate.BeginInvoke又是怎么样的实现原理呢?他和单开一个线程然后来实现函数调用有什么区别呢?
请教
...全文
286
9
打赏
收藏
BeginInvoke 问题
BeginInvoke 一种是基于Control的,另外一种是关于Delegate的BeginInvoke,Control.BeginInvoke 是UI线程用于同步UI界面的一种调用方法,他仍然属于UI线程, Delegate.BeginInvoke又是怎么样的实现原理呢?他和单开一个线程然后来实现函数调用有什么区别呢? 请教
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
meiwlong
2012-07-05
打赏
举报
回复
总结一下BeginEnd模型至少有三种情况
1.Control.BeginInvoke 是用消息机制通知创建控件的UI线程
2.比如socket\http\IO读写的以begin打头的方法或者sync结尾的方法,这些都是基于iocp的。
3.单纯的delegate.BeginInvoke 是将任务托管给线程池
jerry_zhang99
2011-03-03
打赏
举报
回复
[Quote=引用 5 楼 xiao_p 的回复:]
begininvoke是delegate这个class提供的函数。
你说的control的begininvoke不过是对基类这个方法的重用罢了,其本质也还是delegate的函数。
[/Quote]
control的begininvoke的实现原理似乎与delegate不是一样的,前者一般用于对ui线程的操作,并没有开启新的线程,而是在线程中间传递了消息,实现了其之间的数据的同步
flyerwing
2011-03-03
打赏
举报
回复
[Quote=引用 4 楼 wuyq11 的回复:]
Invoke就是直接运行,BeginInvoke是开启另一个辅助线程运行。
delegate是定义委托类型的,相当于老版本函数指针类型,它的意义比虚函数更广泛。
[/Quote]
异步调用吧.
jerry_zhang99
2011-03-03
打赏
举报
回复
[Quote=引用 5 楼 xiao_p 的回复:]
begininvoke是delegate这个class提供的函数。
你说的control的begininvoke不过是对基类这个方法的重用罢了,其本质也还是delegate的函数。
begininvoke的原理则是实现了线程池的queryuserworkitem方法,其本质无非就是线程池的其它线程的调用。
begininvoke和endinvoke是.net为了实现异步的使用,而针……
[/Quote]
control的begininvoke不过是对基类这个方法的重用罢了,其本质也还是delegate的函数, 既然如此他们应该属于另外一个线程,可是在调用的时候发现Control的BeginInvoke的执行体也是在ui线程中,这个该怎么理解啊
xiao_p
2011-03-02
打赏
举报
回复
begininvoke是delegate这个class提供的函数。
你说的control的begininvoke不过是对基类这个方法的重用罢了,其本质也还是delegate的函数。
begininvoke的原理则是实现了线程池的queryuserworkitem方法,其本质无非就是线程池的其它线程的调用。
begininvoke和endinvoke是.net为了实现异步的使用,而针对异步采取的一种编程范式,你可以看成是语法糖,其实无非就是异步编程的一种实现方式,如此而已。
wuyq11
2011-03-02
打赏
举报
回复
Invoke就是直接运行,BeginInvoke是开启另一个辅助线程运行。
delegate是定义委托类型的,相当于老版本函数指针类型,它的意义比虚函数更广泛。
lizhibin11
2011-03-02
打赏
举报
回复
BeginInvoke要区分两种情况,一种是.net已经定义的某些IO操作类的BeginInvoke,比如socket\http\IO读写的以begin打头的方法或者sync结尾的方法,这些都是基于iocp的。
一种是自定义delegate的BeginInvoke方法,这些实际是封装了处理器线程池。
garfieldzf
2011-03-02
打赏
举报
回复
http://www.cnblogs.com/peterzb/archive/2009/06/10/1500273.html
这个博客应该对你有用。
C#委托Be
gin
Invoke
返回值乱序
问题
探讨WPF中使用Be
gin
Invoke
方法执行多线程操作时出现的返回值乱序
问题
,并提出解决方案。
C#委托Be
gin
Invoke
返回值乱序
问题
(转)
文章讨论了在C#中使用Be
gin
Invoke
方法进行多线程异步操作时遇到的返回乱序
问题
,并通过增加同步用的Handle和返回用的Result字段解决了此
问题
,同时提高了执行效率。
C#多线程解决界面卡死
问题
的完美解决方案,Be
gin
Invoke
而不是委托delegate
本文介绍了使用C#的Be
gin
Invoke
方法来解决UI线程阻塞
问题
,对比了Be
gin
Invoke
与委托delegate的区别,提供了一个完美的解决方案,确保界面的流畅响应。
Be
gin
Invoke
与End
Invoke
方法解决多线程接收委托返回值
问题
本文详细介绍了如何利用Be
gin
Invoke
与End
Invoke
方法解决多线程环境下委托返回值的
问题
,通过实例展示了在非创建线程中的调用方法及返回值的获取方式。
委托(delegate)的Be
gin
Invoke
异步处理遇到的
问题
本文详细阐述了一个在使用.NET Framework 2.0时遇到的委托异步处理
问题
,即在异步操作中无法获取到HttpContext.Current的情况。通过日志记录的方法,最终找到了
问题
所在并给出了解决方案,帮助开发者避免了类似困扰。
C#
111,132
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章