在 C# 中處理要同時執行的部分代碼的正確方法是什么?這些呼叫中的每一個大約需要 3 秒(我們目前正在對我們的系統進行索引改進)。如何使這些陳述句與結果并行執行?
var properties = await _propertyService.GetPropertiesAsync("Fairfax, VA");
var ratings = await _ratingsService.GetRatingsAsync(12549);
uj5u.com熱心網友回復:
您可以await從呼叫中洗掉并等待結果Task.WhenAll:
var propertiesTask = _propertyService.GetPropertiesAsync("Fairfax, VA");
var ratingsTask = _ratingsService.GetRatingsAsync(12549);
await Task.WhenAll(propertiesTask, ratingsTask);
var properties = propertiesTask.Result;
var ratings = ratingsTask.Result;
或者拆分方法呼叫和等待(這通常是不太可取的選項):
var propertiesTask = _propertyService.GetPropertiesAsync("Fairfax, VA");
var ratingsTask = _ratingsService.GetRatingsAsync(12549);
var properties = await propertiesTask;
var ratings = await ratingsTask;
uj5u.com熱心網友回復:
你可以用Task.WhenAll它。
Task.WhenAll不會阻塞并且可以等待,在所有任務完成之前將控制權交還給呼叫者(與 相比Task.WaitAll)
就例外而言,如果任何已提供的任務在故障狀態下完成,則回傳的任務也將在故障狀態下完成,其中其例外將包含來自每個提供的任務的未包裝例外集的聚合。
var task1 = _propertyService.GetPropertiesAsync("Fairfax, VA");
var task2 = _ratingsService.GetRatingsAsync(12549);
await Task.WhenAll(task1, task2);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/340352.html
