概述
ThreadPool相比Thread来说具备了很多优势,但是ThreadPool却又存在一些使用上的不方便。比如:
◆ ThreadPool不支持线程的取消、完成、失败通知等交互性操作;
◆ ThreadPool不支持线程执行的先后次序;
Task在线程池的基础上进行了优化,并提供了更多的API。
1.async和await的使用
2.Task的使用
3.task中途取消任务
//声明CancellationTokenSource对象 static CancellationTokenSource cancelTokenSource = new CancellationTokenSource(); static void Main(string[] args) { Task.Factory.StartNew(MyTask, cancelTokenSource.Token); Console.WriteLine("请按回车键(Enter)停止"); Console.ReadLine(); cancelTokenSource.Cancel(); Console.WriteLine("已停止"); Console.ReadLine(); } //测试方法 static void MyTask() { //判断是否取消任务 while (!cancelTokenSource.IsCancellationRequested) { Console.WriteLine(DateTime.Now); Thread.Sleep(1000); } }View Code
利用CancellationTokenSource 。
使用计时取消任务,当一个任务超过了我们所设定的时间然后自动取消该任务的执行。
var cancelTokenSource = new CancellationTokenSource(3000);
或
cancelTokenSource.CancelAfter(3000);
参考自:C# task 取消线程