gpt4 book ai didi

c# - 异步方法 .Result 与同步方法

转载 作者:行者123 更新时间:2023-11-30 18:56:15 24 4
gpt4 key购买 nike

这两种方法是否一样?这两个都阻塞了主线程,不是吗?

// 1. Use async method
public IEnumerable<Entity> AsyncMethod()
{
return Context.Entities.ToListAsync().Result;
}

// 2. Use sync method
public IEnumerable<Entity> SyncMethod()
{
return Context.Entities.ToList();
}

最佳答案

对于你提到的特定 API,我不知道它们是否相同;这些 API 的专家应该回答。

一般中,如果有一个同步API和一个异步API,是否保证异步API的结果与同步API的结果相同?

。作为其契约的一部分,同步 API 应保证在合理的时间内产生结果或异常。 获取异步 API 的Result 允许“死锁”

这是因为允许异步 API 工作的方式是安排将来在当前线程上完成的工作,然后在相关任务完成后继续运行。通过同步要求 Result,您可以进入这样一种情况:工作计划在将来 在此线程上运行,但此线程现在处于阻塞状态,直到工作完成完成,我们有一个单线程死锁情况。

有关为什么会导致死锁以及如何防止死锁的更多详细信息,请参阅 this article .

获取任务的 Result 几乎从来没有是正确的做法。如果您需要任务的结果,请await

关于c# - 异步方法 .Result 与同步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44123275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com