【问题标题】:Inheriting from Task in C#从 C# 中的任务继承
【发布时间】: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。

然后,一旦所有任务完成,我就可以检索所有失败的任务。

只是寻找任何想法或指导!

【问题讨论】:

标签: c# inheritance async-await task


【解决方案1】:

如果继承Task,则必须在BaseTask 的构造函数中调用Task 的至少一个构造函数。例如:

    public class BaseTask : Task
    {
        public Boolean succeed;

        public BaseTask(Action action) : base(action)
        {
        }
    }

还有更多constructors,对你和编译器有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-01
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 2020-10-15
    相关资源
    最近更新 更多