c# - 默认初始化任务
问题描述
我有一堆异步任务可能会或可能不会根据其他表达式的结果运行。但是,我仍然希望能够等待它们,但我不能这样做,因为有些不会被初始化。如何默认初始化任务?例如:
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 中等待任务来阻塞我的线程。
谢谢!
解决方案
好吧,您可以使用已完成的任务:
Task<string> ownerTask = Task.FromResult("");
或者,您可以保留您实际要等待的任务的列表,并且只将“真实”任务添加到该列表中。
推荐阅读
- javascript - 覆盖更大的数字,选择给定的较小数字
- ios - 在全屏模式演示样式中使用 segue 时如何仍然显示导航栏?
- windows - 在 CMD 中将内容从一个文件复制到另一个文件
- visual-studio - 无法启动 Azure 存储模拟器
- wso2 - WSO2 访问令牌自动撤销,无需明确请求
- windows - VirtualEnv 未在 Windows cmd 中显示
- java - 如何在 Spring Boot 中导入 xml 文件?
- android - 如何使用在 Android Studio 的 onResponse 方法中定义的变量的值
- laravel - 如何在布局中添加变量并在 Laravel 的所有页面上访问?
- excel - 复制除最后两列之外的所有列