【发布时间】:2017-02-01 21:29:17
【问题描述】:
我不确定这个状态。我需要从数据库异步中获取数据。
我有类 DB
public class Db{
public async Task<ObservableCollection<Person>> GetAllPerson()
{
using (var context = new Db())
{
// get data and return ObservableCollection<Person>
}
}
}
在 ViewModel 中我调用 LoadData 函数。
public class VM{
public ObservableCollection<Person> Person { get; set; }
private readonly DB sqlRepository;
public VM()
{
sqlRepository=new DB();
LoadData();
}
private async void LoadData()
{
Person= await sqlRepository.GetAllPerson();
}
}
我收到警告:警告 CS1998 此异步方法缺少“等待”运算符,将同步运行。
如何异步运行我的函数? 我应该使用吗?
Person=await Task.Run(()=>this.sqlRepository.GetAllPerson());
【问题讨论】:
-
你可以试试。我使用了一种 Person=await Task.Run(()=>this.sqlRepository.GetAllPerson());在我的项目中。
-
我收到消息说这段代码将同步运行。
-
警告在哪一行?
-
在DB层开头的函数public async Task
> GetAllPerson() -
那么您可能没有在该方法中进行任何异步调用。粘贴正在从数据库中提取数据的代码行。
标签: c# async-await