使用Task.WhenAll
有很多好处,但它至少使写入内容所需的LOC增加一倍。Task.WhenAll使用较少的代码行
清单1
var result1 = await SomeLongRunningOperation1().ConfigureAwait(false);
var result2 = await SomeLongRunningOperation2().ConfigureAwait(false);
var result3 = await SomeLongRunningOperation3().ConfigureAwait(false);
Listing2
var result1Task = SomeLongRunningOperation1();
var result2Task = SomeLongRunningOperation2();
var result3Task = SomeLongRunningOperation3();
await Task.WhenAll(
result1Task,
result2Task,
result3Task)
.ConfigureAwait(false);
var result1 = result1Task.Result;
var result2 = result2Task.Result;
var result3 = result3Task.Result;
显然清单1等待3个操作彼此(3×10秒= 30秒)后,而Listing2等待3个操作中的同一时间(全部3秒只有10秒)。
但是清单2中的代码更难以阅读。
我的问题是: 是否有可能将清单2的逻辑编写成易于阅读且与清单1一样简短的内容?
PUT“result1Task result2Task result3Task”的数组,你的代码更短。 –