⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 program.cs

📁 C#高级编程第6版随书源代码 值得下载
💻 CS
字号:
using System;
using System.Threading;


namespace EventSample
{
   public struct InputData
   {
      public int X;
      public int Y;

      public InputData(int x, int y)
      {
         this.X = x;
         this.Y = y;
      }
   }

   public class ThreadTask
   {
      private AutoResetEvent autoEvent;

      public int Result { get; private set; }

      public ThreadTask(AutoResetEvent ev)
      {
         this.autoEvent = ev;
      }

      public void Calculation(object obj)
      {
         InputData data = (InputData)obj;
         Console.WriteLine("Thread {0} starts calculation", 
            Thread.CurrentThread.ManagedThreadId);
         Thread.Sleep(new Random().Next(3000));
         Result = data.X + data.Y;

         // signal the event - completed!
         Console.WriteLine("Thread {0} is ready", 
            Thread.CurrentThread.ManagedThreadId);
         autoEvent.Set();

      }
   }

   class Program
   {

      static void Main()
      {
         int taskCount = 4;

         AutoResetEvent[] autoEvents = new AutoResetEvent[taskCount];
         ThreadTask[] tasks = new ThreadTask[taskCount];

         for (int i = 0; i < taskCount; i++)
         {
            autoEvents[i] = new AutoResetEvent(false);
            tasks[i] = new ThreadTask(autoEvents[i]);

            if (!ThreadPool.QueueUserWorkItem(tasks[i].Calculation,
               new InputData(i + 1, i + 3)))
            {
               Console.WriteLine("not executed");
            }
         }

         for (int i = 0; i < taskCount; i++)
         {
            int index = WaitHandle.WaitAny(autoEvents);
            if (index == WaitHandle.WaitTimeout)
            {
               Console.WriteLine("Timeout!!");
            }
            else
            {
               Console.WriteLine("finished task for {0}, result: {1}", index,
                  tasks[index].Result);
               

            }
            
         }

      }
   }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -