原文:.NET 4 并行(多核)编程系列之四 Task的休眠
.NET 4 并行(多核)编程系列之四 Task的休眠
前言:之前的几篇文章断断续续的介绍了Task的一些功能:创建,取消。本篇介绍Task的休眠,本篇的内容比较的少。
本篇的议题如下:
秒钟之后就打印出一条信息。在例子中,在我们敲一下键盘之后,CancellationToken就会被Cancel,此时休眠就停止了,task重新唤醒,只不过是这个task将会被cancel掉。
有一点要注意:WaitOne()方法只有在设定的时间间隔到了,或者Cancel方法被调用,此时task才会被唤醒。如果如果cancel()方法被调用而导致task被唤醒,那么CancellationToken.WaitHandle.WaitOne()方法就会返回true,如果是因为设定的时间到了而导致task唤醒,那么CancellationToken.WaitHandle.WaitOne()方法返回false。
微秒。如果采用的是之前的第一种休眠方法,那么不管WaitOne()中设置了多长的时间,只要token.Cancel()被调用,那么task就像内部的Scheduler发出了cancel的请求,而且task会被cancel。
);
// print out a message
Console.WriteLine("Task 1 - Int value {0}", i);
// check for task cancellation
token.ThrowIfCancellationRequested();
}
}, token);
// start task
task1.Start();
// wait for input before exiting
Console.WriteLine("Press enter to cancel token.");
Console.ReadLine();
// cancel the token
tokenSource.Cancel();
// wait for input before exiting
Console.WriteLine("Main method complete. Press enter to finish.");
Console.ReadLine();
}