信号亮
using System;
using System.Threading;
using System.Collections;
namespace test
{
class WaitOne
{
static void Main()
{
ManualResetEvent man1 = new ManualResetEvent(false);
ManualResetEvent man2 = new ManualResetEvent(false);
ManualResetEvent man3 = new ManualResetEvent(false);
ManualResetEvent man4 = new ManualResetEvent(false);
ManualResetEvent[] ms =new ManualResetEvent[]{man1,man2,man3};
P p1 = new P(1, man1);
P p2 = new P(2, man2);
P p3 = new P(3, man3);
P p4 = new P(4, man4);
ThreadPool.QueueUserWorkItem(WorkMethod,p1);
ThreadPool.QueueUserWorkItem(WorkMethod,p2);
ThreadPool.QueueUserWorkItem(WorkMethod,p3);
//man3.WaitOne();//执行完当前线程才往下走
WaitHandle.WaitAll(ms);//执行完数组中所有线程才往下走
// ThreadPool.QueueUserWorkItem(WorkMethod, p4);
Console.WriteLine("如果用了Wait,对应的线程结束后才执行这句话.");
}
static void WorkMethod(object stateInfo)
{
P p = (P)stateInfo;
Console.WriteLine("当前线程."+p.Num);
p.Man.Set();
}
}
class P {
public P(int num, ManualResetEvent man)
{
this.Man = man;
this.Num = num;
}
public int Num { get; set; }
public ManualResetEvent Man { get; set; }
}
}
posted on 2010-05-22 11:25 Master zhu 阅读(172) 评论(0) 编辑 收藏 举报