[英]C# 5.0 async await return a list
我正在學習async / await,並遇到了我需要調用async方法的情況,該異步方法應該返回一個對象或同一對象的列表。
這是正確的實施方式嗎?
來自AManager.cs
public async Task Initialize(string objectPath)
{
AnObject someObject = await BClass.GetAnObject(objectPath);
}
這是被調用的方法
Class B:
public async Task<AnObject> GetAnObject(string objectPath)
{
AnObject someObj = new AnObject();
return someObj;
}
如果我想返回一個對象列表會發生什么? 我應該創建一個包含列表的包裝器? 並返回那個包裝器?
因為這不適用:
public async Task<List<AnObject>> GetAnObject(string objectPath)
為了能夠以異步方式運行方法,您需要在內部等待。 如果你沒有它,它將作為同步方法運行。 這可能就是為什么它不適合你。 為此,您可以執行以下操作:
public async Task<List<string>> GetList()
{
return await Task.Run(() => new List<string>() {"a", "b"});
}
然后運行它:
var list = await GetList()
我不確定您正在嘗試完成的Task<List<AnObject>>
不適用,但這是另一個在上面的示例中返回AnObject的List的示例
public class AnObject()
{
SomeProperty {get; set;}
Some Method();
}
public class theCollectionofAnObject : IList<AnObject> ()
{
private List<AnObject> _contents = new List<AnObject>;
//Implement the rest of IList interface
}
//Your async method
public Task<theCollectionofAnObject> GetAnObjects(parameter)
{
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.