如何进行Task.CompletedTask和Task.Result分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
成都创新互联公司是一家集网站建设,平昌企业网站建设,平昌品牌网站建设,网站定制,平昌网站建设报价,网络营销,网络优化,平昌网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
例如,定义了一个返回Task的接口方法,但是在实现中,并没有特别耗时的代码。
public interface IComputer { Task Do(); Task<string> DoString();}
一般我们会这样实现。即使实现中代码很简短。
public class Computer : IComputer { public Task Do() { return Task.Run(() => { //逻辑代码 }); } public Task<string> DoString() { return Task.Run( () => { //逻辑代码 return "aaa"; }); }}
实际上,Task类上面有两个帮助程序,,这些帮助程序让代码更具可读性,并且所需的运行时开销更少。
对于上述接口实现中的 Do方法,我更愿意使用Task.CompletedTask。
public Task Do() { //逻辑代码 return Task.CompletedTask; }
我们看一下CompletedTask的定义
/// <summary>Gets a task that has already completed successfully.</summary>/// <returns>The successfully completed task.</returns>public static Task CompletedTask { get; }
如果返回Task <T>怎么办?在这种情况下,如果您已经有了答案,请使用Task.FromResult包装答案。
public Task<string> DoString() { //逻辑代码 return Task.FromResult("aaa");}
看一下FromResult的定义
/// <summary>Creates a <see cref="T:System.Threading.Tasks.Task`1" /> that's completed successfully with the specified result.</summary>/// <param name="result">The result to store into the completed task.</param>/// <typeparam name="TResult">The type of the result returned by the task.</typeparam>/// <returns>The successfully completed task.</returns>public static Task<TResult> FromResult<[Nullable(2)] TResult>(TResult result);
通过上述的改变,即实现了接口的实现,也减少了Task.Run调用的系统开销。
看完上述内容,你们掌握如何进行Task.CompletedTask和Task.Result分析的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
文章名称:如何进行Task.CompletedTask和Task.Result分析
分享网址:https://www.cdcxhl.com/article40/jjjheo.html
成都网站建设公司_创新互联,为您提供商城网站、小程序开发、手机网站建设、网站营销、移动网站建设、企业建站
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联