首页 新闻 搜索 专区 学院

C# 中 Task.Yield() 的用处何在

0
悬赏园豆:100 [已解决问题] 解决于 2018-03-01 22:37

今天在博文 拥抱.NET Core系列:MemoryCache 初识 中第一次看到在 async 方法中使用 Task.Yield() ,代码如下:

static async Task Main(string[] args)
{
    IMemoryCache memoryCache = new MemoryCache(Options.Create(new MemoryCacheOptions()));

    var value = await memoryCache.GetOrCreateAsync("cache1",
        async entry =>
        {
            await Task.Yield();
            return 1;
        });

    Console.WriteLine(value);
    Console.WriteLine(memoryCache.Get("cache1"));
}

请问上面代码中 Task.Yield() 究竟有何用处?

C#
dudu的主页 dudu | 高人七级 | 园豆:37733
提问于:2018-03-01 17:35
< >
分享
最佳答案
2

我觉得应该是强制这个方法体以异步方式完成

收获园豆:90
MrNice | 老鸟四级 |园豆:3035 | 2018-03-01 20:34
其他回答(2)
0

赞同楼上观点!

收获园豆:10
Jeffcky | 园豆:2589 (老鸟四级) | 2018-03-01 20:57
0

如果是这样的话,我直接以这种方式强制执行异步方法不可以吗?

            await Task.Yield();
            return 1;

替换成不可以吗?

await Task.FromResult(1);
反骨仔 | 园豆:444 (菜鸟二级) | 2018-03-20 11:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册