【发布时间】:2022-01-17 11:04:42
【问题描述】:
我目前有这个代码,每个任务都调用一个 API:
asyncTasks = new List<Task>
{
itemDetailsOperation.Import(),
importPromotionsOperation.Update(),
importCripTransactionHistoryOperation.Import(),
importShelfTagTransactionHistoryOperation.Import(),
importClaimTransactionHistoryOperation.Import(),
importNaturalClaimTransactionHistoryOperation.Import(),
importPriceAuditTransactionHistoryOperation.Import(),
importOrdersOperation.Import(),
importAdNotificationsOperation.Import(),
importScheduledShipmentListOperation.Import(),
importDeliveryDepartmentOperation.Import(),
importDeliveryScheduleOperation.Import(),
importFutureShipmentItemsOperation.Import(),
importOrderGuidesOperation.Import(),
importClaimReasonCodeOperation.Import()
};
await Task.WhenAll(asyncTasks.ToArray());
而不是在失败时抛出异常(当前逻辑),我想知道哪些 API 调用失败。
我尝试查看其他相关主题并尝试执行以下代码:
public class BaseTask : Task
{
public Boolean succeed;
public BaseTask()
{
}
}
但编译器不喜欢它,因为“'Task' 不包含带 0 个参数的构造函数”。我的想法是,一旦 API 失败,我可以将成功标志设置为 false,如果成功,我可以将其设置为 true。
然后,一旦所有任务完成,我就可以检索所有失败的任务。
只是寻找任何想法或指导!
【问题讨论】:
-
您知道任务实际上有属性,对吧?你可以在你的
WhenAll行周围抛出一个try和catch,然后在catch 中迭代并找到错误的任务。 -
任务已经具有
IsCompletedSuccessfully属性。为什么要添加另一个具有相同含义的属性 (succeed)?
标签: c# inheritance async-await task