在类中怎么使用委托

lovezhizi 2015-01-28 05:14:24
我知道在窗体类下面 可以用 this.Invoke(new DelegateClear(clear));

现在: 我在窗体下开了一个线程,线程会调用 类A中的方法1,方法1里会调用类A的方法2。我想让方法2的执行过程委托给主线程,就是创建窗体的线程。 改怎么办?
就是在类A 方法1里,怎么调用方法2? this.不出invoke (因为他表示当前的类)
...全文
339 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Saleayas 2015-01-28
  • 打赏
  • 举报
回复
System.Windows.Threading.Dispatcher.CurrentDispather
lovezhizi 2015-01-28
  • 打赏
  • 举报
回复
因为类A中的方法2 ,不让主线程执行的话就会报错
lovezhizi 2015-01-28
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
[quote=引用 楼主 lovezhizi 的回复:] 我想让方法2的执行过程委托给主线程,就是创建窗体的线程
什么叫做“委托给”?有什么意义? 你要是能够说出这样做有什么意义,你自己就知道该如何委托了。否则就成了不落地的空话。[/quote] 我的意思就是方法2 让创建窗体的线程执行,就是那个意思,我对委托理解的不深刻,别介意..
lovezhizi 2015-01-28
  • 打赏
  • 举报
回复
引用 2 楼 wyd1520 的回复:
if (System.Windows.Forms.Application.OpenForms.Count > 0) { System.Windows.Forms.Form frm = System.Windows.Forms.Application.OpenForms.Cast<System.Windows.Forms.Form>().First(); if (frm.InvokeRequired) { frm.Invoke(new Action(() => { //这里执行你的代码 })); } }
碉堡了,这样确实能获取主线程并交给他执行。。多谢!
  • 打赏
  • 举报
回复
我们知道,窗体也属于类的范畴,其实也就是类与类之间调用; 看lz描述 应该是 使用类A调用 窗体类中的方法2
  • 打赏
  • 举报
回复
引用 楼主 lovezhizi 的回复:
我想让方法2的执行过程委托给主线程,就是创建窗体的线程
什么叫做“委托给”?有什么意义? 你要是能够说出这样做有什么意义,你自己就知道该如何委托了。否则就成了不落地的空话。
本拉灯 2015-01-28
  • 打赏
  • 举报
回复
if (System.Windows.Forms.Application.OpenForms.Count > 0) { System.Windows.Forms.Form frm = System.Windows.Forms.Application.OpenForms.Cast<System.Windows.Forms.Form>().First(); if (frm.InvokeRequired) { frm.Invoke(new Action(() => { //这里执行你的代码 })); } }
於黾 2015-01-28
  • 打赏
  • 举报
回复
那你需要把创建类的窗体对象传递进来啊,否则类里哪知道到底是要调用哪个窗体?

111,124

社区成员

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

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

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