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