信号亮

 

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编辑  收藏  举报

导航