国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Task.FromResult應用場景舉例

2019-11-14 14:10:56
字體:
來源:轉載
供稿:網友

 

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长兴县| 尼玛县| 彩票| 孟村| 云和县| 通海县| 伊金霍洛旗| 曲阳县| 东城区| 衡东县| 固阳县| 北辰区| 临江市| 延津县| 定安县| 忻城县| 重庆市| 会泽县| 叶城县| 永清县| 宕昌县| 那曲县| 团风县| 亳州市| 武安市| 浠水县| 宝兴县| 三明市| 仪征市| 宜州市| 乌什县| 博兴县| 合江县| 汉中市| 金塔县| 桑植县| 通江县| 剑川县| 乌兰浩特市| 沈丘县| 西宁市|