专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

c#Task.FromResult 的使用

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 1:00:42       共计:3671 浏览



Task.FromResult用来创建一个带返回值的、已完成的Task。




场景一:以同步的方式实现一个异步接口方法




比如有一个接口包含异步方法。




interface IMyInterface


{


Task<int> DoSthAsync();


}




现在,需要以同步的方式实现该接口方法DoSthAsync,但要返回异步的结果。这正是Task.FromResult的用武之地。




public class MyClass : IMyInterface


{


public Task<int> DoSthAsync()


{


int result = 1;


return Task.FromResult(result);


}


}




以上,在实现类MyClass的DoSthAsync方法中,都是以同步方式实现,但返回结果要是Task<int>,使用Task.FromResult刚好能返回一个带值的异步结果。




场景二:从缓存中获取值,以同步或者异步的方式实现




假设需要根据key从缓存中获取值,如果每个key对应的缓存不存在,就需要以异步的方式获取缓存,如果存在,就直接中缓存中获取值。


写一个异步获取缓存的方法。

private async Task<string> GetValueAsync(int key)


{


string result = await SomeAsyncMethod();


cache.TrySetValye(key, result);


return result;


}




现在需要写一个方法用来获取缓存中的值,有可能是异步方式,也有可能是同步的方式(从本地缓存中获取)。




public Task<string> GetValueFromCache(int key)


{


string result = string.Empty;


if(cache.TryGetValue(key, out result))


{


return Task.FromResult(result);


}


return GetValueAsync(key);


}



以上,从本地缓存中获取值是同步的方式,但方法返回的类型是异步的Task,通过Task.FromResult(result)返回了异步结果。


另外,如果使用Task.FromResult不带返回值,就使用Task.FromResult(0) 或 Task.FromResult(null)。


版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:c# 使用Enumerable.Range 打印数字0到9 | ·下一条:@inject在 ASP.NET Core 中将依赖项注入到视图

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有