static void Main(string[] args) { CancellationTokenSource tokenSource = new CancellationTokenSource(); CancellationToken token = tokenSource.Token; ManualResetEvent resetEvent = new ManualResetEvent(true); Task task = new Task(async () => { //输出i int i = 0; while (true) { if (token.IsCancellationRequested) { return; } resetEvent.WaitOne(); //do something Console.WriteLine(i++); await Task.Delay(100); } }, token); task.Start(); //2秒后暂停 Thread.Sleep(2000); resetEvent.Reset(); Console.WriteLine("Reset"); //2秒后启动 Thread.Sleep(2000); resetEvent.Set(); Console.WriteLine("Set"); //2秒后暂停 Thread.Sleep(2000); resetEvent.Reset(); Console.WriteLine("Reset"); Console.ReadKey(); } }