• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

必须得“控件.BeginInvoke” ??

wugamp 2017-01-18 03:00:50
为了跨线程委托调用控件,我用到了 BeginInvoke。我看到的例子是这么写的:
textEdit.BeginInvoke( .....);
其中 textEdit 是控件。
但是我实验后发现也可以直接写 BeginInvoke(...)。请问两种写法有什么区别?

...全文
306 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
卧_槽 2017-02-04
直接写就是省略了this 如果能运行说明你的代码是在winform窗体中。
回复
qbilbo 2017-02-03
我猜想:textEdit.BeginInvoke( .....);是写在窗体里的。 如果是这样的话,那么直接写BeginInvoke(....)就是调用窗体的BeginInvoke的方法。 控件.BeginInvoke和窗体.BeginInvoke的意思是交给创建该控件、窗体的线程去执行,而大多数情况下,窗体、控件都是同一个线程创建的,所以没有区别。
回复
引用 6 楼 sp1234 的回复:
所以说,如果 this 本身就是控件,那么这么写就对了。如果this 本身不是控件,那么这么写自然就会在运行时产生错误。
这个说法我赞成
回复
所以说,如果 this 本身就是控件,那么这么写就对了。如果this 本身不是控件,那么这么写自然就会在运行时产生错误。
回复
引用 4 楼 wugamp 的回复:
有什么办法来知道第二个 BeginInvoke 是在哪个对象(类)上定义的呢?翻书没意思,要自己做实验。
对象的方法里边直接写
方法名(.....参数.....);
这就是省略了
this.方法名(....参数.....);
里边的 this. 这是 c# 的语法,让你省得写 this. 了。这个是基本语法,重温一下最初的 c# 课程怎么教你在代码中直接调用方法的那个课程,它应该早就告诉你的。
回复
wugamp 2017-02-03
引用 1 楼 sp1234 的回复:
你知道第二个 BeginInvoke 是那个对象(类)上定义的吗?
有什么办法来知道第二个 BeginInvoke 是在哪个对象(类)上定义的呢?翻书没意思,要自己做实验。
回复
wugamp 2017-01-19
引用 2 楼 qq_34798533 的回复:
this。。。。。。。。。。。。。。。。
引用 1 楼 sp1234 的回复:
你知道第二个 BeginInvoke 是那个对象(类)上定义的吗?
不知道。是在 UI 线程,还是整个进程上定义的?
回复
xiaoyu5425 2017-01-18
this。。。。。。。。。。。。。。。。
回复
你知道第二个 BeginInvoke 是那个对象(类)上定义的吗?
回复
相关推荐
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2017-01-18 03:00
社区公告

让您成为最强悍的C#开发者