c#主线程如何知道子线程执行结束

dingli321 2010-04-15 01:25:58
启动50个线程执行其它任务,主线程无限循环监控子线程的一些参数变化,我用什么主线程才能得知子线程已经执行完了?请教高手
...全文
671 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
dingli321 2010-04-15
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zhoufoxcn 的回复:]
引用 9 楼 dingli321 的回复:

自己已经解决,主线程循环判断子线程的isAlive就可以了。真不知道这分怎么给。想说一句4楼的liaoxing168,这个论坛就是解决问题的,不是发表感慨的地方,我只是要个代码的例子,有何不可?要是不会你就关注着本贴就可以了,何必说那样的话呢。要是你的代码啊我贵贱还不看,肯定写的挺垃圾

人家本来是一番好意,很多人自己从来不动脑筋,一上来就是要……
[/Quote]
我问问你他是什么好意?从“好久没来了,怎么看到的帖子都是伸手要代码的?这么好要???”你看出啥好意来了?
现在我不是自己解决的吗?告诉你是因为项目急才这样做,你从来不要代码,你遇到问题就自己动脑筋,一个项目要求一个星期时间,你想个问题用5天,你咋弄?领导不开你才怪啊!从代码中学习不是动脑吗?我看你理解有误吧!
周公 2010-04-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 dingli321 的回复:]

自己已经解决,主线程循环判断子线程的isAlive就可以了。真不知道这分怎么给。想说一句4楼的liaoxing168,这个论坛就是解决问题的,不是发表感慨的地方,我只是要个代码的例子,有何不可?要是不会你就关注着本贴就可以了,何必说那样的话呢。要是你的代码啊我贵贱还不看,肯定写的挺垃圾
[/Quote]
人家本来是一番好意,很多人自己从来不动脑筋,一上来就是要代码,最后做了几年开发出了会要代码之外什么都不会了,你这么答复确实.....
dingli321 2010-04-15
  • 打赏
  • 举报
回复
自己已经解决,主线程循环判断子线程的isAlive就可以了。真不知道这分怎么给。想说一句4楼的liaoxing168,这个论坛就是解决问题的,不是发表感慨的地方,我只是要个代码的例子,有何不可?要是不会你就关注着本贴就可以了,何必说那样的话呢。要是你的代码啊我贵贱还不看,肯定写的挺垃圾
kugou123 2010-04-15
  • 打赏
  • 举报
回复
补充一下:
用ManualResetEvent或者AutoResetEvent,配合 WaitHandle.WaitOne 或者WaitHandle.WaitAll 方法实现,具体可以参考下MSDN Library
kugou123 2010-04-15
  • 打赏
  • 举报
回复
用Event,子线程结束,触发Event。
主线程等待Event被触发,这样事件被触发的时候,表明子线程已经运行结束。
kenny-huang 2010-04-15
  • 打赏
  • 举报
回复
还有其他方法吗
小生我怕怕 2010-04-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fibona 的回复:]
设置一个公共变量已完成的线程数,在每一个线程执行完返回之前,通过异步回调,更新该值,如果该值,与主线程中记录的线程数量一致则全部完成

如果要判断某一个线程是否执行完成,只要在主线程中把新开的每一个子线程都记录下来,然后在每一个线程执行完返回之前,通过异步回调带上参数,当前线程,然后在主线程中,进行比较即可
[/Quote]
UP!
  • 打赏
  • 举报
回复
好久没来了,怎么看到的帖子都是伸手要代码的?这么好要???
dingli321 2010-04-15
  • 打赏
  • 举报
回复
自己顶
dingli321 2010-04-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fibona 的回复:]
设置一个公共变量已完成的线程数,在每一个线程执行完返回之前,通过异步回调,更新该值,如果该值,与主线程中记录的线程数量一致则全部完成

如果要判断某一个线程是否执行完成,只要在主线程中把新开的每一个子线程都记录下来,然后在每一个线程执行完返回之前,通过异步回调带上参数,当前线程,然后在主线程中,进行比较即可
[/Quote]
有点复杂啊,有代码演示给我看看最好了
Fibona 2010-04-15
  • 打赏
  • 举报
回复
设置一个公共变量已完成的线程数,在每一个线程执行完返回之前,通过异步回调,更新该值,如果该值,与主线程中记录的线程数量一致则全部完成

如果要判断某一个线程是否执行完成,只要在主线程中把新开的每一个子线程都记录下来,然后在每一个线程执行完返回之前,通过异步回调带上参数,当前线程,然后在主线程中,进行比较即可

110,545

社区成员

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

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

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