using System;
using System.Collections.Generic;
using System.Threading; namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var waits = new List<EventWaitHandle>();
for (int i = 0; i < 10; i++)
{
var handler = new ManualResetEvent(false);
waits.Add(handler);
new Thread(new ParameterizedThreadStart(Print))
{
Name = "thread" + i.ToString()
}.Start(new Tuple<string, EventWaitHandle>("test print:" + i, handler));
}
WaitHandle.WaitAll(waits.ToArray());
Console.WriteLine("Completed!");
Console.Read(); } private static void Print(object param)
{
var p = (Tuple<string, EventWaitHandle>)param;
Console.WriteLine(Thread.CurrentThread.Name + ": Begin!");
Console.WriteLine(Thread.CurrentThread.Name + ": Print" + p.Item1);
Thread.Sleep(300);
Console.WriteLine(Thread.CurrentThread.Name + ": End!");
p.Item2.Set();
} }
}

  

C# 多线程的等待所有线程结束 用 ManualResetEvent 控制的更多相关文章

  1. C# 多线程的等待所有线程结束

      //前台线程和后台线程唯一区别就是:应用程序必须运行完所有的前台线程才可以退出://而对于后台线程,应用程序则可以不考虑其是否已经运行完毕而直接退出,//所有的后台线程在应用程序退出时都会自动结束 ...

  2. CountDownLatch 多线程,等待所有线程结束

    CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. 主要方法 public CountDownLatch(int count); 构造 ...

  3. C# 多线程的等待所有线程结束的一个问题

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  4. Java多线程之以7种方式让主线程等待子线程结束

    记一次主线程等待子线程结束的多种方法的学习 在学习多线程时,最开始遇到的问题其实是"计算子线程运行时间",写到最后发现本文和标题更为符合,但是仍然基于问题:"在主线程中获 ...

  5. java 多线程 Thread.join子线程结束父线程再运行;join(long):等待超时毫秒数

    Join的使用 目的:当子线程运行结束后,父线程才能再继续运行 /** * @ClassName ThreadJoinExample * @projectName: object1 * @author ...

  6. Java Thread.join()详解--父线程等待子线程结束后再结束

    目录(?)[+] 阅读目录 一.使用方式. 二.为什么要用join()方法 三.join方法的作用 join 四.用实例来理解 打印结果: 打印结果: 五.从源码看join()方法   join是Th ...

  7. Java 并发编程中的 CountDownLatch 锁用于多个线程同时开始运行或主线程等待子线程结束

    Java 5 开始引入的 Concurrent 并发软件包里面的 CountDownLatch 其实可以把它看作一个计数器,只不过这个计数器的操作是原子操作,同时只能有一个线程去操作这个计数器,也就是 ...

  8. 线程:Java主线程等待子线程结束

    使用Thread.join()方法: public class App { public static void main(String[] args) { testMain(); } public ...

  9. Java如何等待子线程执行结束

    工作中往往会遇到异步去执行某段逻辑, 然后先处理其他事情, 处理完后再把那段逻辑的处理结果进行汇总的产景, 这时候就需要使用线程了. 一个线程启动之后, 是异步的去执行需要执行的内容的, 不会影响主线 ...

随机推荐

  1. 关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件

    找了这么久资料,总算解决了 感谢博客园:http://www.cnblogs.com/xsht/p/5275081.html 感谢百度:http://zhidao.baidu.com/link?url ...

  2. 在Ubuntu中创建与Windows的共享文件夹

    在Ubuntu中创建与Windows的共享文件夹 本周的学习需要用到一个压缩包,我从QQ群里下载到了Windows里.虽说我已经安装了虚拟机增强功能,能够与Windows系统共享剪切板,但它也只能共享 ...

  3. css3旋转倾斜3d小动画

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  4. 便携式文件夹加密器 lockdir 5.74

    便携式文件夹加密器 lockdir 5.74下载地址 http://www.hoposoft.com/lock/ 注册码两枚: 注册名:Long 注册码:6088805000000E7E25F09A6 ...

  5. 51nod1693 水群

    题目链接:51nod1693 水群 题解参考大神的博客:http://www.cnblogs.com/fighting-to-the-end/p/5874763.html 这题时限0.4秒,真的够狠的 ...

  6. UNION并集运算

    在集合论中,两个集合(集合A和集合B)的并集是一个包含集合A和B中所有元素的集合.换句话说,如果一个元素属于任何一个输入集合,那么它也属于结果集.如图所示.

  7. <1 小玩意(覆盖效果)

    <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="utf-8& ...

  8. 通过WebViewJavascriptBridge实现OC与JS交互

      在.m方法当中,申明一个WebViewJavascriptBridge属性: @interface ExampleAppViewController () @property WebViewJav ...

  9. 记录一些容易忘记的属性 -- UINavigationController

    //设置导航栏的风格    self.navigationController.navigationBar.barStyle = UIBarStyleDefault;    //设置导航栏是否透明 N ...

  10. phpdesigner 的配置

    PHPDesigner 1.语言点击“view->language->”选择2.配置localhost点击“工具->配置->调试->本地”local服务器路径写自己的工作 ...