//from
//http://www.microsoft.com/china/community/Column/94.mspxclass MonitorSample
{
private Queue _queue = new Queue();
public void Producer()
{
int counter = 0;
lock( _queue )//判断该资源是否被其他线程占用
{
while( counter < 2 )
{
Monitor.Wait( _queue );//暂时放弃调用线程对该资源的锁,让Consumer执行
_queue.Enqueue( counter );//生成一个资源
Console.WriteLine( String.Format( "生产:{0}", counter ) );
Monitor.Pulse( _queue );//通知在Wait中阻塞的Consumer线程即将执行
counter++;
}
}
}
public void Consumer()
{
lock( _queue )
{
Monitor.Pulse( _queue );//通知在Wait中阻塞的Producer线程即将执行
while( Monitor.Wait( _queue, 10 ) )
{
int counter = ( int ) _queue.Dequeue();//取出一个资源
Console.WriteLine( String.Format( "消费:{0}", counter ) );
Monitor.Pulse( _queue );//通知在Wait中阻塞的Producer线程即将执行
}
}
}
static void Main(string[] args)
{
MonitorSample monitor = new MonitorSample();            
Thread producer = new Thread( new ThreadStart( monitor.Producer ) );
Thread consumer = new Thread( new ThreadStart( monitor.Consumer ) );
producer.Start();
consumer.Start();
producer.Join();
consumer.Join();            
Console.ReadLine();
}
}

解决方案 »

  1.   

    愚翁BLOG中有相关解释,参考下:http://blog.csdn.net/Knight94/archive/2006/08/24/1111267.aspx
      

  2.   

    viena(维也纳nn)    愚翁 哪个我看过,  非常不好!   Thread.Resume();
    Thread.Suspend();根本实现不了!!
      

  3.   

    zswang(伴水清清)  是多线程  , 暂用资源问题,我就想让 用 Suspeng(); Resume()  ; 的功能,
      

  4.   

    看这里http://community.csdn.net/Expert/topic/5142/5142371.xml?temp=.3429071