使实体框架Linq查询异步
本文关键字:查询 异步 Linq 框架 实体 | 更新日期: 2023-09-27 18:10:53
我有一个函数,在我的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();
}
});
}