C#多线程控制

以下代码演示了主线程如何控制子线程的运行,希望对学习C#多线程编程的小伙伴有所帮助!

  CancellationTokenSource tokenSource = new CancellationTokenSource();
  ManualResetEvent manualResetEvent = new ManualResetEvent(true);
  Console.WriteLine("主线程指令:启动");
  var myTask = Task.Run(async () =>
  {
      int value = 0;
      while (true)
      {
          manualResetEvent.WaitOne();
          value++;
          Console.WriteLine($"\t子线程运行了{value*100}毫秒");
          await Task.Delay(100);
      }
  }, tokenSource.Token);
  Thread.Sleep(500);
  Console.WriteLine("主线程指令:暂停");
  manualResetEvent.Reset();
  Thread.Sleep(500);
  Console.WriteLine("主线程指令:继续");
  manualResetEvent.Set();
  Thread.Sleep(500);
  Console.WriteLine("主线程指令:停止");
  tokenSource.Cancel();
  manualResetEvent.Close();
  Console.Read();

运行结果

主线程指令:启动
        子线程运行了100毫秒
        子线程运行了200毫秒
        子线程运行了300毫秒
        子线程运行了400毫秒
        子线程运行了500毫秒
主线程指令:暂停
主线程指令:继续
        子线程运行了600毫秒
        子线程运行了700毫秒
        子线程运行了800毫秒
        子线程运行了900毫秒
        子线程运行了1000毫秒
主线程指令:停止

你可能感兴趣的:(C#多线程控制)