社区
C#
帖子详情
请问子线程如何通知主线程执行方法?
nicholaskj
2010-10-06 03:44:56
该贴中http://topic.csdn.net/u/20090227/15/5be6748d-c496-42cf-86a9-f40cb80bcfbb.html
提到子线程通知主线程做出响应,用到的是Form的Invoke方法
但是,我的主线程不是Form的,是控制台的,请问有没有类似与Invoke的方法,在子线程中通知主线程做出响应?
谢谢回帖
...全文
653
8
打赏
收藏
请问子线程如何通知主线程执行方法?
该贴中http://topic.csdn.net/u/20090227/15/5be6748d-c496-42cf-86a9-f40cb80bcfbb.html 提到子线程通知主线程做出响应,用到的是Form的Invoke方法 但是,我的主线程不是Form的,是控制台的,请问有没有类似与Invoke的方法,在子线程中通知主线程做出响应? 谢谢回帖
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
太上老君
2010-10-07
打赏
举报
回复
console的主线程是main啊,主线程出不了main啊,主线程到main的},整个程序就结束了,怎么叫通知主线程执行方法啊,主线程就一个main方法。console的多线程只是让main执行到某一句停住而已。
第二,你的winform窗体那也不是主线程啊,主线程还是main,窗体只是main创建的第一个对象,但是mian只有这一句(大意),才显得像主线程,其实他只是运行在主线程上的一个对象,但是他的特点是主要不关闭,main就没法继续执行,窗体关闭后,main还会继续执行}这个才完。
要想达到你说的这种,先弄一个类,像form类一样不关就卡住main不动的那种,然后main以单线程创建实例,这样这个实例就在主线程了,从这个类里开线程,然后用委托回调,这样就你说的子线程通知主线程了,很奇怪的一个程序。
nicholaskj
2010-10-07
打赏
举报
回复
[Quote=引用 5 楼 laotse 的回复:]
console的主线程是main啊,主线程出不了main啊,主线程到main的},整个程序就结束了,怎么叫通知主线程执行方法啊,主线程就一个main方法。console的多线程只是让main执行到某一句停住而已。
第二,你的winform窗体那也不是主线程啊,主线程还是main,窗体只是main创建的第一个对象,但是mian只有这一句(大意),才显得像主线程,其实他只是运行在主线程上的一个对象……
[/Quote]
您看问题确实透彻
我的主线程确实不是控制台
因为我做的二次开发,主程序加载我的dll
不知道能不能在dll中获取主窗口的句柄构造form,这样就可以使用invoke了,在主线程中调用方法。
肄若芸
2010-10-07
打赏
举报
回复
委托+事件
用法参考:http://msdn.microsoft.com/zh-cn/library/ms173176(v=VS.80).aspx
nicholaskj
2010-10-06
打赏
举报
回复
[Quote=引用 3 楼 zenghd 的回复:]
在多线程中不能直接执行与界面有关的代码,假如涉及到界面,那就虽然使用到InvokeRequired、Invoke或者委托、 事件
既然你不能使用InvokeRequired和Invoke那就使用委托和事件
至于委托是不是属于线程的,那有什么关系呢?
[/Quote]
因为有些代码必须在主线程下执行,在子线程下会出错,我也弄不清为什么
所以想在子线程通知主线程,让主线程做出反应
ZengHD
2010-10-06
打赏
举报
回复
在多线程中不能直接执行与界面有关的代码,假如涉及到界面,那就虽然使用到InvokeRequired、Invoke或者委托、 事件
既然你不能使用InvokeRequired和Invoke那就使用委托和事件
至于委托是不是属于线程的,那有什么关系呢?
nicholaskj
2010-10-06
打赏
举报
回复
[Quote=引用 1 楼 zenghd 的回复:]
委托 事件
[/Quote]
不知道能否详细一些,我尝试使用委托,
但是刚才有人说,线程执行的委托属于线程的,该怎么处理呢?
ZengHD
2010-10-06
打赏
举报
回复
委托 事件
C#
子
线程
执行
完后
通知
主
线程
的
方法
怎么让
子
线程
去做
主
线程
的事儿呢,我们只需要把
主
线程
的
方法
传递给
子
线程
就行了,那么传递
方法
就很简单了委托传值嘛; 下面有一个例
子
,
子
线程
干一件事情,做完了
通知
主
线程
public class Program { //定义一个为委托 public delegate void Entrust(string str); static void Main(string[] args)...
关于在
子
线程
中在run
方法
执行
完之后
通知
主
线程
进行操作的
方法
。(Toast在
子
线程
中无法使用)
主
线程
对
子
线程
的回调。
java
子
线程
通知
主
线程
_java-在
子
线程
中
执行
主
线程
方法
尝试这个…1. Dance
方法
属于Class TestExample类,而不属于Main
线程
.2.每当启动Java应用程序时,JVM就会创建一个
主
线程
,并放置一个???main()
方法
位于堆栈的底部,使其成为入口点,但是如果要创建另一个
线程
并调用一个
方法
,则它将在新创建的
线程
内运行.3.它的Child
线程
将
执行
dance()
方法
.请参阅下面的示例,其中我使用了Thread.currentThrea...
c#
子
线程
与
主
线程
之间通信
c#
子
线程
与
主
线程
之间通信 在做多
线程
传递消息是发生报错,查找到这个
方法
,可以使用。特此保存: 先说明一下,本人最近遇到了什么问题,就是在写写消息队列的时候,发现消息队列每次接收一个消息的时候都是创建了一个新的
线程
。 这样就导致了消息处理的时候没有在
主
线程
上进行,然而其中的一些步事项是要通过
主
线程
才能操作的。 这样就引出了一个
子
线程
怎么去
通知
主
线程
要做哪些事情呢?为了解决上面的问题我找了好的多资料...
子
线程
循环10次,接着
主
线程
循环100,接着又回到
子
线程
循环10次,接着再回到
主
线程
又循环100,如此循环50次,请写出程序。 ...
public class ThreadTest { /** *
子
线程
循环10次,接着
主
线程
循环100,接着又回到
子
线程
循环10次,接着再回到
主
线程
又循环100,如此循环50次,请写出程序。 */ public static void main(String[] args) { // TODO Auto-generated meth...
C#
111,129
社区成员
642,535
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章