【发布时间】:2021-07-30 03:12:59
【问题描述】:
正如这个问题的标题所述,我在 xamarin 表单 shell 应用程序中使用 sqlite-net nuget 包。我选择在我的应用程序中使用 sqlite API 的异步版本。我已经开发了一种方法,但我实际上不确定这是否正确。从技术上讲,它确实有效,并且可以完成我想要它做的事情,但我想知道这是否真的是最好的方法。这是有问题的方法
public async static Task<List<BPEntry>> GetAllBP()
{
var query = database.Table<BPEntry>();
var result = await query.ToListAsync();
return result;
}
我感到困惑的是,当您在 query.ToListAsync() 上使用 await 运算符时,它会返回一个 List<BPEntry> 对象。
现在,我想将 List<BPEntry> 对象返回给调用方法,但由于我理解异步方法的工作方式,我不能直接将 List<BPEntry> 传回。
相反,我不得不返回包含列表的Task。这意味着我也必须将调用方法设为 I。
这对我来说似乎很奇怪。为什么我不能直接将 List<BPEntry> 对象传回非异步调用方法?
这几乎就像您解压缩操作以获取 List<BPEntry> 一样,但是您不必直接将其传回,而是必须将其包装在一个任务中。这对我来说似乎是多余的。
那么我这样做对吗?
有什么我遗漏的吗?
或者这就是异步方法在 C# 中的工作方式?
【问题讨论】:
标签: c# asynchronous xamarin.forms async-await task