Juh*_*gas 1 .net c# asynchronous task
您好我想知道是否有更简洁的方法来编写下面的异步代码.基本上我想等待所有任务,但其中一个任务是可选的.感觉不必要的复杂的,想如果我能做到这一点通过一些回调,但一直没能弄明白.
var mobile = true;
var task1 = _service.Async1();
var tasks = new List<Task>
{
task1
};
Task<int> task2 = null;
if (!mobile)
{
task2 = _service.Async2();
tasks.Add(task2);
}
await Task.WhenAll(tasks);
var result1 = task1.Result;
if (!mobile)
{
result2 = task2.Result;
// Do stuff
}
Run Code Online (Sandbox Code Playgroud)
无需创建列表并立即等待所有结果.await你需要的时候为什么不呢?如果task2运行时间超过task1,则至少可以在task2完成之前开始处理它.
像这样的东西:
var task1 = _service.Async1();
Task<int> task2 = null;
if (!mobile)
{
task2 = _service.Async2();
}
var result1 = await task1;
if (!mobile)
{
var result2 = await task2;
// Do stuff
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
313 次 |
| 最近记录: |