繁体   English   中英

使实体框架Linq查询异步

[英]Make Entity Framework Linq query async

我有一个在Winform应用程序中填充组合框的函数。 该操作需要几秒钟,所以我想使其异步。

这是函数:

public static List<string> GetAllPostCodeRegions(string country)
{
    using (var db = new PlaceDBContext())
    {
        var regions = db.PostCodes.Where(pc => pc.Country == country).OrderBy(pc => pc.Region).Select(pc => pc.Region).Distinct().ToList();

        return regions;
    }
}

我尝试只添加如下异步关键字:

public async static Task<List<string>> GetAllPostCodeRegions(string country)
{
    using (var db = new PlaceDBContext())
    {
        var regions = db.PostCodes.Where(pc => pc.Country == country).OrderBy(pc => pc.Region).Select(pc => pc.Region).Distinct().ToList();

        return regions;
    }
}

但这并没有等待什么,并且在我打电话时UI仍然锁定:

var regions = await DataFunctions.GetAllPostCodeRegions("UK");

如何使此操作异步并停止UI锁定?

您可以尝试.ToListAsync或:

public static Task<List<string>> GetAllPostCodeRegions(string country)
{
    return Task.Run(() => 
       {
          using (var db = new PlaceDBContext())
          {
               return db.PostCodes
                        .Where(pc => pc.Country == country)
                        .OrderBy(pc => pc.Region)
                        .Select(pc => pc.Region).Distinct().ToList();
          }
      });        
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM