技术笔记:1.C#Task

1.概括

task任务在.net4.0出现的,是线程池基础上封装而来的,对Thread进行了优化提升。

2.Task基本用法
2.1创建一个Task任务
Task task=new Task(() =>
{
    Console.WriteLine("创建任务1");
});task.Start();//启动任务
//带启动创建任务
Task.Run(() => {
    Console.WriteLine("创建任务2");
});
//添加任务工厂自动进行任务管理,
Task.Factory.StartNew(() => {
    Console.WriteLine("创建任务3");
});
2.2Task延迟等待

使用Task.Delay(100).Wait();方法等同于Thread.sleep(100);注意:Thread.sleep(100)是同步执行,Task.Delay(100)是异步执行不会造成当前线程阻塞,只有配合Wait()使用时达到与Thread.sleep(100)相同的效果

2.3Task取消任务

使用CancellationTokenSource类来控制Task任务的取消状态,使用cts.Cancel()改变任务状态为取消状态。

CancellationTokenSource cts = new CancellationTokenSource();
Task task=new Task(() =>
{
    Console.WriteLine("创建一个可取消的任务");
},cts.Token);
task.start();
cts.Cancel();

已开始的任务取消后不会立即结束,仍会将任务执行完,先将任务取消再进行创建任务,此时任务不会被创建,task为null。cts.Token.IsCancellationRequested控制任务是否取消的状态;true为任务已取消。

2.4获取Task的id

在Task内部获取id使用Task.CurrentId获取id,在Task任务外部直接使用task.id获取id

Task task=new Task(() =>
{
    Console.WriteLine("任务开启的线程id"+Task.CurrentId);
    Task.Delay(2000).Wait();
},cts.Token);
task.Start();
Console.WriteLine("任务开启的线程id" + task.Id);

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值