我有下面的簡化代碼,它可以異步獲得來自多個運營商的運輸費率,並想知道是否值得轉換爲使用異步/等待方法,如果是的話,那麼最好的方法是什麼?或者如果它的工作現在好了,它真的不值得付出努力?謝謝。是否從Task <>。Factory.StartNew/Task.Factory.ContinueWhenAll()轉換爲async/await?
List<Task<ShippingRateCollection>> lstTasks = new List<Task<ShippingRateCollection>>();
Task<ShippingRateCollection> t;
t = Task<ShippingRateCollection>.Factory.StartNew(() => { return GetUPSRates(...); });
lstTasks.Add(t);
t = Task<ShippingRateCollection>.Factory.StartNew(() => { return GetUSPSRates(...); });
lstTasks.Add(t);
t = Task<ShippingRateCollection>.Factory.StartNew(() => { return GetFedExRates(...); });
lstTasks.Add(t);
//wait until all requests complete (or error out)
Task.Factory.ContinueWhenAll(lstTasks.ToArray(), (tasks) =>
{
//wrap all exceptions into 1 AggregateException
Task.WaitAll(tasks);
});
foreach (Task<ShippingRateCollection> task in lstTasks)
{
foreach (ShippingRate rate in task.Result)
{
... //display rate
} //next returned rate
}
在你的代碼貼延續什麼都不做。你知道嗎? – usr