现有两个线程a和b,操作的是同一个文件,怎么样才能保证,a线程操作完毕后才启动b线程进行操作.

解决方案 »

  1.   

    那何必用两个线程?
    调用Join,可以阻塞当前线程直到那个线程结束
      

  2.   

    用AutoResetEvent 去做
    详细资料可以查msdn
      

  3.   

    using System;
    using System.Threading;
    class Resource {
       Mutex m = new Mutex();   public void Access(Int32 threadNum) {
          m.WaitOne();
          try {
             Console.WriteLine("Start Resource access (Thread={0})", threadNum);
             Thread.Sleep(500);
             Console.WriteLine("Stop  Resource access (Thread={0})", threadNum);
          }
          finally {
             m.ReleaseMutex();
          }
       }
    }
    class App {
       static Int32 numAsyncOps = 5;
       static AutoResetEvent asyncOpsAreDone = new AutoResetEvent(false);
       static Resource res = new Resource();   public static void Main() {
          for (Int32 threadNum = 0; threadNum < 5; threadNum++) {
             ThreadPool.QueueUserWorkItem(new WaitCallback(UpdateResource), threadNum);
          }      asyncOpsAreDone.WaitOne();
          Console.WriteLine("All operations have completed.");
       }
       // The callback method's signature MUST match that of a System.Threading.TimerCallback 
       // delegate (it takes an Object parameter and returns void)
       static void UpdateResource(Object state) {
          res.Access((Int32) state);
          if (Interlocked.Decrement(ref numAsyncOps) == 0)
             asyncOpsAreDone.Set();
       }
    }
    VS自己带的例子,