首页 > 解决方案 > 默认初始化任务

问题描述

我有一堆异步任务可能会或可能不会根据其他表达式的结果运行。但是,我仍然希望能够等待它们,但我不能这样做,因为有些不会被初始化。如何默认初始化任务?例如:

        Task<string> ownerTask;
        if(fields.Select(x => x.Name == "owner").Any())
        {
            ownerTask = _repo.GetOwnerIdFromIssueId(issueId);
        }

        await Task.WhenAll(ownerTask, anothertask, anothertask, etc);

在此示例中,“ownerTask”实际上可能有也可能没有与之关联的任务,具体取决于 if 语句的结果,但我不想通过在 if 中等待任务来阻塞我的线程。

谢谢!

标签: c#

解决方案


好吧,您可以使用已完成的任务:

Task<string> ownerTask = Task.FromResult("");

或者,您可以保留您实际要等待的任务的列表,并且只将“真实”任务添加到该列表中。


推荐阅读