Csharp/CSharp Tutorial/Thread/WaitHandle — различия между версиями

Материал из .Net Framework эксперт
Перейти к: навигация, поиск
м (1 версия)
 
(нет различий)

Текущая версия на 15:20, 26 мая 2010

Waiting with WaitHandle

<source lang="csharp">using System; using System.Threading; class ThreadSleeper {

   AutoResetEvent napDone = new AutoResetEvent(false);
   
   public void Sleep()
   {
       Thread.Sleep(1000);
       napDone.Set();
   }
   
   public static WaitHandle GetWaitHandle()
   {
       ThreadSleeper ts = new ThreadSleeper();
       Thread thread = new Thread(new ThreadStart(ts.Sleep));
       thread.Start();
       return(ts.napDone);
   }

} class MainClass {

   public static void Main()
   {
       WaitHandle[] waits = new WaitHandle[2];
       waits[0] = ThreadSleeper.GetWaitHandle();
       waits[1] = ThreadSleeper.GetWaitHandle();
       
       Console.WriteLine("Waiting for threads to finish");
       WaitHandle.WaitAll(waits);
       Console.WriteLine("Threads finished");
   }

}</source>

Waiting for threads to finish
Threads finished