我有一個方法返回一個對象的列表<>。此方法需要一段時間才能運行。列表<MyObject>不包含GetAwaiter的定義
private List<MyObject> GetBigList()
{
... slow stuff
}
該方法從4或5個來源中調用。所以,我想我會嘗試使用異步並等待在這個列表生成時繼續移動。我加入這個方法:
public async Task<List<MyObject>> GetBigListAsync()
{
var resultsTask = GetBigList();
var resuls = await resultsTask;
return resuls;
}
但是,在這條線:
var resuls = await resultsTask;
我得到這個錯誤:
List<MyObject> does not contain a definition for GetAwaiter, and no extension method 'GetAwaiter' accepting a first argument of type List<MyObject> could be found.
我缺少什麼?
你的示例代碼沒有顯示出任何使用任務的GetBigList方法也不會標記爲async,這意味着不能等待該方法的結果。 –
嘗試異步任務<列表> GetBigList() –
Mate
請記住,await不會將異步操作轉換爲異步操作。等待將當前方法的其餘部分註冊爲*已有的*異步操作的繼續。等待是關於*管理異步*,而不是*創建*。如果你希望同步操作是異步的,你將不得不找出一種方法來實現這一點。 –