gpt4 book ai didi

c# - 为什么要对 QueueBackgroundWorkItem 使用异步?

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

在 ASP.NET QueueBackgroundWorkItem 方法中使用 async 有什么好处?

HostingEnvironment.QueueBackgroundWorkItem(async cancellationToken =>
{
var result = await LongRunningMethodAsync();
// etc.
});

我的理解是异步函数是用来防止长时间运行的任务阻塞主线程的。但是,在这种情况下,我们不是在它自己的线程中执行任务吗?与非异步版本相比有什么优势:

HostingEnvironment.QueueBackgroundWorkItem(cancellationToken =>
{
var result = LongRunningMethod();
// etc.
});

最佳答案

What is the benefit of using async with the ASP.NET QueueBackgroundWorkItem method?

它允许您的后台工作项调用异步 API。

My understanding is that async functions are used to prevent long-running tasks from blocking the main thread. However, in this case aren't we executing the task in its own thread anyway?

异步方法的优点是它们释放了调用 线程。 ASP.NET 上没有“主线程”——只是开箱即用的请求线程和线程池线程。在这种情况下,异步后台工作项目将释放线程池线程,这可能会增加可扩展性。

What is the advantage over the non-async version

或者,您可以这样想:如果 LongRunningOperationAsync 是一个自然的异步操作,那么 LongRunningOperation 将阻塞一个线程,否则该线程可以用于其他事情。

关于c# - 为什么要对 QueueBackgroundWorkItem 使用异步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36942716/

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