时间:2021-05-20
在使用多线程过程中,可能会遇到在一些情况下必须等待子线程全部执行结束后主线程才进行下一步,
做法如下:
//在使用多线程过程中,可能会遇到在一些情况下必须等待子线程全部执行结束后主线程才进行下一步,做法如下 List<ManualResetEvent> manualEvents = new List<ManualResetEvent>();//创建线程等待集合 for (int i = 0; i < 64; i++) //WaitHandles 的数目必须少于或等于 64 个,所以最大线程数为64 { MB m = new MB();//自定义类,用于传参 m.mre= new ManualResetEvent(false); m.ID = i; manualEvents.Add(m.mre); ThreadPool.QueueUserWorkItem(ThreadMethod, m); } WaitHandle.WaitAll(manualEvents.ToArray());//等待所有线程结束 Console.WriteLine("Thread Finished!");private static void ThreadMethod(object obj) { MB m = (MB)obj; Thread.Sleep(1000);//等待1秒,用于模拟系统在处理事情 m.mre.Set();//将事件设置为终止状态 Console.WriteLine("Thread execute:" + m.ID); }以上方法在处理时当线程数超过64时报错 WaitHandles 的数目必须少于或等于 64 个,所以最大线程数为64
解决方法如下:
以上就是C#多线程等待所有子线程结束的示例的详细内容,更多关于c# 多线程等待子线程结束的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
一、主线程会等待所有的子线程结束后才结束首先我看下最普通情况下,主线程和子线程的情况。importthreadingfromtimeimportsleep,ct
本文主要讲述了多线程开发中经典示例,通过本示例,可以加深对多线程的理解。示例概述:下面用一个模拟吃苹果的实例,说明C#中多线程的实现方法。要求开发一个程序实现如
python多线程和多进程区别是: 1、多线程可以共享全局变量,而多进程是不能的。 2、多线程中,所有子线程的进程号相同;多进程中不同的子进程进程号不同。
本文实例讲述了C#多线程学习之使用线程池进行多线程的自动管理。分享给大家供大家参考。具体如下:在多线程的程序中,经常会出现两种情况:一种情况:应用程序中,线程把
问题:对于多线程编程,很多时候往往需要向线程中传递多个参数,而C#中的线程只接收1个object类型的参数(如下):Threadt=newThread(newP