AutoResetEvent.WaitAll 等到人生三大事,然后大笑开心。
2013-04-10 14:21
351 查看
例子描述:人生都有追求幸福理想,下面就用三条线程得到房子,车子,妻子,等待全部得到后,显示人生圆满。
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()
{
MessageBox.Show("人生要有的都有了,好开心");
}
}
}
注意:
AutoResetEvent.WaitAll();//AutoResetEvent继承WaitHandle 等同于:WaitHandle.WaitAll();
WaitHandles 的数目必须少于或等于 64 个。
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()
{
MessageBox.Show("人生要有的都有了,好开心");
}
}
}
注意:
AutoResetEvent.WaitAll();//AutoResetEvent继承WaitHandle 等同于:WaitHandle.WaitAll();
WaitHandles 的数目必须少于或等于 64 个。
相关文章推荐
- AutoResetEvent.WaitAll 等到人生三大事,然后大笑开心。
- Wake WaitHandle AsycProcessor AutoResetEvent
- 线程学习笔记(EventWaitHandler)AutoResetEvent的使用
- AutoResetEvent WaitOne和Set使用实例
- 线程同步 - EventWaitHandle & AutoResetEvent & ManualResetEvent
- [多线程] WaitHandle.WaitAll ManualResetEvent 等待所有线程完成
- -[UIKeyboardTaskQueue waitUntilAllTasksAreFinished] may only be called from the main thread.【创建键盘监听事件,然后操作键盘(弹出、收回),结果在运行程序时出现如下错误(如有知道解决办法的朋友请留言探讨!)】
- 线程同步 - EventWaitHandle & AutoResetEvent & ManualResetEvent
- .Net下的线程同步:Part 1 of N--(EventWaitHandle:AutoResetEvent and ManualResetEvent)
- Phone 7 的ManualResetEvent.WaitAll问题
- C#总结(一)AutoResetEvent的使用介绍(用AutoResetEvent实现同步)
- oracle wait event:reliable message
- C#AutoResetEvent和ManualResetEvent的区别
- 基元线程同步——内核模式构造(WaitHandle,EventWaitHandle,AutoResetEvent,ManualResetEvent,Semaphore,Mutex)
- 人生应该尽情欢乐,让自己开心些
- 多线程wait-notify;notifyall.sleep
- 关于AutoResetEvent的学习
- Java 线程wait, notify and notifyAll 示例
- oracle wait event virtual circuit status
- Linux内核:通过wait_event和wake_up内在机制分析等待队列