簡體   English   中英

C#5.0異步等待返回一個列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM