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()启动异步线程导致的系统开销
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2016-05-19 转载 C#中敏捷开发规范
2016-05-19 转载 C#中使用结构来传递多个参数