社区
C#
帖子详情
BeginInvoke 问题
jerry_zhang99
2011-03-02 03:45:35
BeginInvoke 一种是基于Control的,另外一种是关于Delegate的BeginInvoke,Control.BeginInvoke 是UI线程用于同步UI界面的一种调用方法,他仍然属于UI线程, Delegate.BeginInvoke又是怎么样的实现原理呢?他和单开一个线程然后来实现函数调用有什么区别呢?
请教
...全文
241
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
这个博客应该对你有用。
委托的异步调用 be
gin
Invoke
使用委托的异步调用 Winform应用程序 委托.Be
gin
Invoke
将当前线程的消息转入后台线程 Form.Be
gin
Invoke
可以将其他线程的消息转入界面线程
C#线程 Be
gin
Invoke
和End
Invoke
使用方法
本文开始C#线程系列讲座之一,即Be
gin
Invoke
和End
Invoke
的使用方法,需要的朋友可以参考下
Be
gin
Invoke
导致StackOverflowException
Be
gin
Invoke
导致StackOverflowException
invoke
和be
gin
Invoke
很详细、明确的讲解了
invoke
和be
gin
Invoke
的区别,以及二者所用的场合和情况,如果需要确实值得一看
C#用委托Be
gin
Invoke
做异步线程
今天小编就为大家分享一篇关于C#用委托Be
gin
Invoke
做异步线程,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
C#
111,120
社区成员
642,545
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章