AutoResetEvent.WaitAll 等到人生三大事,然后大笑开心。

简介: 例子描述:人生都有追求幸福理想,下面就用三条线程得到房子,车子,妻子,等待全部得到后,显示人生圆满。   View Code using System;using System.Collections.Generic;using System.Windows.Forms;namespace WindowsApplication1 {     static class Program     {         ///          /// 应用程序的主入口点。

例子描述:人生都有追求幸福理想,下面就用三条线程得到房子,车子,妻子,等待全部得到后,显示人生圆满。

 

img_405b18b4b6584ae338e0f6ecaf736533.gif View Code
using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace WindowsApplication1
{
     static  class Program
    {
         ///   <summary>
        
///  应用程序的主入口点。
        
///   </summary>
        [MTAThread]  // 不支持一个 STA 线程上针对多个句柄的 WaitAll。解决办法把STAThread改成MTAThread
         static  void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault( false);
            Application.Run( new Form1());
        }
    }
}

 

img_405b18b4b6584ae338e0f6ecaf736533.gif View Code
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace WindowsApplication1
{
     public  partial  class Form1 : Form
    {
         public Form1()
        {
            InitializeComponent();
        }

 

         private  void button1_Click( object sender, EventArgs e)
        {
             // 定义一个人对象
            Person person =  new Person();

             // 这个人去干三件大事
            Thread GetCarThread =  new Thread( new ThreadStart(person.GetCar));
            GetCarThread.Start();

            Thread GetHouseThead =  new Thread( new ThreadStart(person.GetHouse));
            GetHouseThead.Start();

            Thread GetWillThead =  new Thread( new ThreadStart(person.GetWife));
            GetWillThead.Start();

             // 等待三件事都干成的喜讯通知信息
            AutoResetEvent.WaitAll(person.autoEvents);

             // 这个人就开心了。
            person.ShowHappy();
        }

     }

     public  class Person
    {
         // 建立事件数组
         public AutoResetEvent[] autoEvents =  null;

         public Person()
        {
            autoEvents =  new AutoResetEvent[]
            {
                 new AutoResetEvent( false),
                 new AutoResetEvent( false),
                 new AutoResetEvent( false)
            };
        }


         public  void GetCar()
        {
            MessageBox.Show( " 捡到奔驰 ");
            autoEvents[ 0].Set();
        }

         public  void GetHouse()
        {
            MessageBox.Show( " 赚到房子 ");
            autoEvents[ 1].Set();
        }

         public  void GetWife()
        {
            MessageBox.Show( " 骗到老婆 ");
            autoEvents[ 2].Set();
        }


         public  void ShowHappy()
        {
            Messag eBox.Show( " 人生要有的都有了,好开心 " );
        }
    }
}

 

 

 注意:

AutoResetEvent.WaitAll();//AutoResetEvent继承WaitHandle 等同于:WaitHandle.WaitAll();

WaitHandles 的数目必须少于或等于 64 个。

目录
相关文章
|
4月前
|
Web App开发 搜索推荐 虚拟化
macOS Sonoma 14.8.2 (23J126) 正式版 ISO、IPSW、PKG 下载
macOS Sonoma 14.8.2 (23J126) 正式版 ISO、IPSW、PKG 下载v
411 3
macOS Sonoma 14.8.2 (23J126) 正式版 ISO、IPSW、PKG 下载
|
4月前
|
人工智能 自然语言处理 数据可视化
小白必看:AI智能体零基础搭建全攻略!
无需技术背景,零代码半小时搭建专属AI智能体!可视化操作,Docker一键部署,支持文档处理、智能问答、自动总结。三步搞定:部署、配置模型、定制智能体,轻松应对工作与学习多场景需求,小白也能快速上手,即刻体验AI高效便捷!
|
人工智能 Linux 文件存储
旧台式电脑的 10 种用途
旧台式电脑的 10 种用途
1027 14
|
机器学习/深度学习 数据可视化 数据挖掘
基于Copula分布的合成数据采样:保持多维数据依赖结构的高效建模方法
本文深入探讨了Copula的基础理论、运作机制及其在数据科学领域的应用。Copula作为一种数学框架,能够将随机变量间的依赖关系与其边际分布分离,特别适用于处理非线性依赖关系或异质分布变量。文章通过年龄与收入的关系分析,展示了Copula在多元分析中的独特优势,并介绍了高斯Copula的具体应用实例。此外,还详细讲解了Copula在合成数据生成中的应用,验证了合成数据在训练机器学习模型时的有效性。
640 18
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
22443 31
|
XML 监控 Java
如何在Spring Boot中使用AOP
如何在Spring Boot中使用AOP
|
开发框架 前端开发 关系型数据库
Winform开发的快速、健壮、解耦的几点建议
Winform开发的快速、健壮、解耦的几点建议
|
Shell
删除常规文件及隐藏文件shell脚本
删除常规文件及隐藏文件shell脚本
189 1
|
消息中间件 监控 算法