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();
}
}