【发布时间】:2020-03-31 15:16:26
【问题描述】:
我是 .NET 新手,我想知道 TPL(任务并行库)是否在后台使用队列来执行您启动的任务?
那么我可以“排队”或启动尽可能多的任务,而 .NET 会处理这个吗?那我为什么需要 BlockingQueue 等呢?
我问这个是因为我需要一个 WebApi (.NET Core) 来接受消息并将其放入队列中,然后对其进行一些处理。如果我是对的,那么我不需要队列左右,而只需要队列任务吗?
简而言之:我可以使用 TPL 将任务“排队”,还是需要一个 BlockingQueue 左右来通过 API 处理我的传入消息?
谢谢
【问题讨论】:
-
您认为为什么需要手动“排队”任务?
-
你已经走得太远了。阅读 .NET Core 如何处理请求。如果您需要异步处理,TAP 将在大部分时间为您服务。 如果您正在进行“长时间运行”的处理,请将此信息添加到您的问题中,因为那是完全不同的故事。
-
@bbrinck 如果你想在 ASP.NET Core 应用程序中使用一些通用的后台工作人员,我建议使用可以处理排队作业的托管服务。我用一个例子来详细解释in this answer。
-
好的,那么。查看 poke 评论中的链接并试一试。但是您知道吗:如果您最初认为 TPL 是一种解决方案,请尝试一下。也许你失败了。失败就是学习。请注意,您可能需要考虑采用不同的方法:)
-
您可能会觉得这很有趣:Fire and forget on ASP.NET。正确的解决方案并不容易。
标签: c# .net asp.net-core task-parallel-library