目的:  
设置一个时间后,马上读取,然后再设置一个时间,再读取……循环进行  
 
运行结果有问题:(如下)  
t1  started  
set  time  i0  
set  time  i1  
t2  started  
………………  
………………  
set  time  i0完了应该是  “read  time  is……“啊,怎么会出现这种情况呢?  
一般大家都是用什么方法解决“生产者消费者问题啊”  
using  System;  
using  System.Net;  
using  System.Data;  
using  System.Data.SqlClient;  
using  System.Collections;  
using  System.Threading;  
using  System.Runtime.InteropServices;  
 
public  class  k  
{  
           private  object  time  =  new  object();  
           private  DateTime  lastSendTime;  
           int  i  =  0;  
           AutoResetEvent  objEvent  =  new  AutoResetEvent(true);  
           AutoResetEvent  objEvent1  =  new  AutoResetEvent(true);  
           //访问lastSendTime的唯一方法  
               public  DateTime  LastSendTime  
               {  
                       get  
                       {  
                       lock(time)  
                       {  
                                   return  this.lastSendTime;  
                       }  
                                                 
                       }  
                       set  
                       {  
                       lock(time)  
                       {  
                                   this.lastSendTime  =  value;  
                       }  
                       }  
               }  
 
           public  void  init()  
           {  
                             Thread  thread1  =  new  Thread(new  ThreadStart(testT1));  
                       Thread  thread2  =  new  Thread(new  ThreadStart(testT2));  
                       thread1.Start();              
                       thread2.Start();  
           }    
             
           private  void  testT1()  
           {  
                 Console.WriteLine("t1  started");  
                       while(i<100)  
                 {  
                     LastSendTime  =  DateTime.Now;  
                     Console.WriteLine("set  time  i"  +  i++);  
                     objEvent.Set();  
                     objEvent1.WaitOne();  
                 }  
                   //objEvent.Set();  
                   Console.WriteLine("over!!!!!");  
           }  
 
           private  void  testT2()  
           {  
                   Console.WriteLine("t2  started");  
                         while(true)  
                   {  
                         objEvent.WaitOne();  
                         int  a  =  0;  
                         while(a<20000000)  
                         {  
                         a  ++;  
                         }  
                         Console.WriteLine("read  time  is"  +  LastSendTime.ToString()  +  i);  
                         objEvent1.Set();  
                 }  
           }  
}  
 
public  class  kw  
{  
           k  asd;  
           public  kw()  
           {  
                       asd  =  new  k();  
           }  
           public  static  void  Main(string  []  args)  
           {  
                       kw  k  =  new  kw();  
                       k.asd.init();  
           }  
             
}