通过将数据库调用转换为EF中的异步调用来使UI响应

时间:2016-05-18 16:19:05

标签: c# entity-framework sqlite asynchronous win-universal-app

我正在使用新的Data Access in Universal Windows Platform。我能够检索数据,但问题是因为检索代码本质上是同步的,所以Windows应用程序变得无响应,直到检索到完整列表。由于其绑定为ObservableCollection,因此只要检索到列表,UI就会更新。

public List<Brand> retrieveBrands()
{
    List<Brand> brandList = new List<Brand>();
    using (var db = new CarDataContext())
    {
        brandList = db.Brands.ToList();
    }
    return brandList;
}

但是现在因为检索列表之间存在时间间隔,因此UI几秒钟内无响应。 如何使这个检索异步/使我的方法异步,以便一旦检索到列表,我就能得到一个任务。完成的通知和UI仍然是响应。

我的问题几乎与问here的问题相似,但由于没有答案,我发帖提问。

1 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情

public Task<List<Brand>> retrieveBrands()
{
    return Task.Run(()=>
    {
        List<Brand> brandList = new List<Brand>();
        sing (var db = new CarDataContext())
        {
            brandList = db.Brands.ToList();
        }
        return brandList;
    });
}