星空网 > 软件开发 > ASP.net

Task.FromResult应用场景举例

 

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)。




原标题:Task.FromResult应用场景举例

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

全球商标注册价格及流程指南:https://www.kjdsnews.com/a/1379766.html
全球商标注册一站式服务来源官网:https://www.kjdsnews.com/a/1379767.html
全球商标查询网站汇总,让您更加便捷的查询商标信息:https://www.kjdsnews.com/a/1379768.html
全球商标查询网站汇总,找到最适合你的:https://www.kjdsnews.com/a/1379769.html
不知道怎么在阿里巴巴国际站找客户?看过来吧:https://www.kjdsnews.com/a/1379770.html
亚马逊卖家都容易忽略的产品生命周期,了解每个阶段必做的事,提升爆款成功率!:https://www.kjdsnews.com/a/1379771.html
仿品独立站从建站、推广、收款到底怎么玩?:https://www.kjdsnews.com/a/1836312.html
仿品独立站从建站、推广、收款到底怎么玩?:https://www.goluckyvip.com/news/186215.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流