社区
C#
帖子详情
BeginInvoke 问题
jerry_zhang99
2011-03-02 03:45:35
BeginInvoke 一种是基于Control的,另外一种是关于Delegate的BeginInvoke,Control.BeginInvoke 是UI线程用于同步UI界面的一种调用方法,他仍然属于UI线程, Delegate.BeginInvoke又是怎么样的实现原理呢?他和单开一个线程然后来实现函数调用有什么区别呢?
请教
...全文
230
9
打赏
收藏
BeginInvoke 问题
BeginInvoke 一种是基于Control的,另外一种是关于Delegate的BeginInvoke,Control.BeginInvoke 是UI线程用于同步UI界面的一种调用方法,他仍然属于UI线程, Delegate.BeginInvoke又是怎么样的实现原理呢?他和单开一个线程然后来实现函数调用有什么区别呢? 请教
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
在VS2008中创建的Winform项目,可以使用`Be
gin
Invoke
`来解决多线程与UI交互的
问题
。 通过上述讨论,我们可以看到`Be
gin
Invoke
`在Winform应用中扮演了至关重要的角色,确保了后台线程与用户界面的正确通信。在处理...
C#线程 Be
gin
Invoke
和End
Invoke
使用方法
在C#编程中,线程是并发执行任务的基础单元,它们允许程序在同一时间处理多个不同的任务,从而提高程序的效率。...在实际开发中,还需要注意线程同步、异常处理以及线程池等高级主题,以避免潜在的并发
问题
。
Be
gin
Invoke
导致StackOverflowException
然而,不当使用`Be
gin
Invoke
`可能导致一个严重的
问题
——`StackOverflowException`,这是一个异常情况,表明调用堆栈已满,无法再添加新的方法调用了。下面我们将深入探讨`Be
gin
Invoke
`的工作原理,以及如何避免引发...
invoke
和be
gin
Invoke
"
invoke
"和"be
gin
Invoke
"是.NET中用于处理多线程间通信的关键方法,尤其涉及到控件交互时。这两个方法都与委托(Delegate)紧密相关,用于在不同线程之间安全地调用方法。本文将深入探讨
invoke
和be
gin
Invoke
的区别、...
C#用委托Be
gin
Invoke
做异步线程
C#用委托Be
gin
Invoke
做异步线程 在C#中,异步线程是一个非常重要的概念,通过使用委托的Be
gin
Invoke
方法,可以实现异步线程的执行。在本文中,我们将详细介绍如何使用委托的Be
gin
Invoke
方法来实现异步线程,以及...
C#
111,094
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章