C#中的Task.CompletedTask和Task.Result学习

在学习C#中的Task方法时,可以知道Task启动一个异步线程方法可以用Task.Run()进行,具体可以参看博客 https://www.cnblogs.com/yaosj/p/10342883.html 和 https://www.cnblogs.com/wynblogscc/p/15138423.html

但是,在有些返回类型是Task的方法中,可以在不进行异步的情况下计算结果. 比如 一个简短的计算函数,或者测试中返回一个预先计算的结果。 像这种就不需要使用Task.Run,也就是说不需要异步执行.

但是它返回的又是Task类型,那应该怎么做到呢? 是这样的:

对于返回是Task类型的  => 我们可以返回 Task.CompletedTask

对于返回是Task<T>类型的  => 我们可以用Task.FromResult()来进行,比如返回的是Task<string>类型,我们可以类似这样返回Task.FromResult("this is result");

我们来看具体的2个例子:

1. 返回Task类型

public Task Do()
{
     //逻辑代码
     
     Task.CompletedTask;

}

2. 返回Task<T>类型

public Task<string> DoString()
{
      //逻辑代码
     
      return TasK.FromResult("This is test result");
}

这2种方式,由于方法时间很短,并不需要异步执行。可以避免用Task.Run()启动异步线程导致的系统开销

 

posted on   新西兰程序员  阅读(1074)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2016-05-19 转载 C#中敏捷开发规范
2016-05-19 转载 C#中使用结构来传递多个参数
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示