【发布时间】:2018-03-15 15:11:42
【问题描述】:
所以我遇到了一些让我感到不舒服的代码,但我找不到确定的答案来确定它是否真的有问题。
我们有一个主要由消息总线使用的 ASP.Net Web API。需要为多个帐户启动一个平衡过程。平衡服务方法是异步的,并返回一个任务。代码是这样调用的:
foreach (AccountingGroup accountingGroup in Groups)
{
ledgerService.CreateItemsAsync(accountingGroup.GLAccountingHeaderId);
}
return StatusCode(HttpStatusCode.NoContent);
这让我觉得在很多层面上都是错误的。我明白了意图。 “我们希望在所有这些组上运行此方法,但我们不需要等待它们完成。
显然没有使用 CancellationToken。如果整个过程运行时间过长,他们就依赖 AWS 来终止整个过程,无论如何,这不是我现在真正可以进行的重构。
我已经离开 C# 一年半,使用异步代码 2.5 年了,我觉得我在某个时候知道这里的问题,但我再也找不到它了。
处理这个问题的正确方法是什么?有问题吗?
【问题讨论】:
-
你的异步方法一开始就有问题 - 这是一个
void async方法,这不是一个好主意stackoverflow.com/questions/12144077/…
标签: c# asp.net-web-api async-await