gpt4 book ai didi

c# - 为什么我的异步函数在调用 task.run 函数时挂起

转载 作者:太空狗 更新时间:2023-10-30 00:30:59 24 4
gpt4 key购买 nike

我想创建一个异步函数,因为我想将结果返回到 UI 并且不想让它挂起,但无论如何都是如此。

谁能告诉我为什么这会挂起?

public ActionResult Index()
{
return View(FunctionThreeAsync().Result);
}

private async Task<MyType> FunctionThreeAsync()
{
return await FunctionThree();
}

private Task<MyType> FunctionThree()
{
return Task.Run<MyType>(() => { /* code */ });
}

最佳答案

这个:

return View(FunctionThreeAsync().Result);

使您的代码陷入僵局。 You shouldn't be blocking on an async method .相反,将您的方法标记为 async , 让它返回 Task<T>await电话:

public async Task<ActionResult> DoStuffAsync()
{
return View(await FunctionThreeAsync());
}

Async 一路走来。当你有一个异步方法时,它需要异步等待,而不是同步阻塞。这意味着传播 async整个代码库。

关于c# - 为什么我的异步函数在调用 task.run 函数时挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31323810/

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