必须得“控件.BeginInvoke” ??

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

...全文
349 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
卧_槽 2017-02-04
  • 打赏
  • 举报
回复
直接写就是省略了this 如果能运行说明你的代码是在winform窗体中。
qbilbo 2017-02-03
  • 打赏
  • 举报
回复
我猜想:textEdit.BeginInvoke( .....);是写在窗体里的。 如果是这样的话,那么直接写BeginInvoke(....)就是调用窗体的BeginInvoke的方法。 控件.BeginInvoke和窗体.BeginInvoke的意思是交给创建该控件、窗体的线程去执行,而大多数情况下,窗体、控件都是同一个线程创建的,所以没有区别。
john_QQ:2335298917 2017-02-03
  • 打赏
  • 举报
回复
引用 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 是那个对象(类)上定义的吗?

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧