C#学习相关系列之多线程(六)----Task的初级使用

一、Task的简介

Task是建立在线程池之上的一种多线程技术,它的出现使Thread成为历史。Task是目前首推的多线程使用方法,简单使用主要从三方面进行介绍:

1、开启线程的方式

2、有参传递

3、有返回值传递

二、代码示例:

1、开启线程的三种方式

//第一种方法
Task task = new Task(() =>
{
    console.writeLine("第一种方法");
});
task.Start();//开启了一个新的线程

//第二种方法
Task.Run(() =>
{
    console.writeLine("第二种方法");
});

//第三种方法
TaskFactory taskFactory = Task.Factory;
taskFactory.StartNew(() =>
{
    console.writeLine("第三种方法");
});

2、有参传递

//有参传递
int a=1o;
int b=5;

public static void do(int a,int b)
{

    int c=a+b;
}

Task.Run(()=>{do(a,b)});

对于参数的传递只能是定义一个有参函数,将参数定义为外部变量。第二种方法定义为结构体,在Thread参数传递中也有介绍。

提示:本人准备建立一个技术交流群,会将日常学习工作中遇到的问题和解决方案进行分享,同时也会将代码和学习资料上传进去,有什么不懂的问题可以咨询我!+v:SJS66-12

生活所迫打个广告,本人也代购莆田鞋,不是中间商,工厂直接取货,价格优惠质量保证,都是我自己前去挑选,可以视频选购验货!!希望大家支持!!!赚点生活费!!!+v:SJS66-12
 

3.有返回值的传递

//获取返回值方式一
Task<int> result = Task.Run<int>(() =>
{
Thread.Sleep(2000);
return DateTime.Now.Year;
});
int iResult = result.Result; //会卡界面等待
//获取返回值方式二
Task.Run<int>(() =>
{
Thread.Sleep(2000);
return DateTime.Now.Year;
}).ContinueWith(intT => //开启一个延续任务
{
int i = intT.Result;
});

其中result可以看作是Task任务的句柄,当主线中result得到结果时候,在iresult=result.result会一直卡停,等待支线程返回result,result只有当直线任务返回才会执行。

参考文档:

C# 异步专题【3.0版本】(Task实现异步)_task 异步-CSDN博客

C# Task_c# task 优先级-CSDN博客

C#并发编程:Task_c# 测试并发-CSDN博客

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值