gpt4 book ai didi

c# - 等待空任务永远旋转(等待新任务(()=>{}))

转载 作者:可可西里 更新时间:2023-11-01 08:52:08 25 4
gpt4 key购买 nike

我试图理解这段代码:

 [TestFixture]
public class ExampleTest
{
[Test]
public void Example()
{
AwaitEmptyTask().Wait();
}

public async Task AwaitEmptyTask()
{
await new Task(() => { });
}
}

方法Example永远不会结束并永远阻塞。 为什么??

修复(来自 Stubbing Task returning method in async unit test )是替换 await new Task( () => {})return Task.FromResult<object>(null);但同样,为什么这是必要的?

我知道有很多与此类似的问题,但我所看到的似乎都无法解释为什么会发生这种情况:

最佳答案

您正在创建一个任务,但从未开始它,所以它永远不会完成。

您应该使用 Task.Run 创建一个您希望立即开始执行的任务,而不是使用 Task 构造函数。

关于c# - 等待空任务永远旋转(等待新任务(()=>{})),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27298313/

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