我在 EF6 中看到了一个新功能,即异步方法。我找到一个例子。
第一种方式是正常调用,例如 EF5:
public Store FindClosestStore(DbGeography location)
{
using (var context = new StoreContext())
{
return (from s in context.Stores
orderby s.Location.Distance(location)
select s).First();
}
}
以及新的调用,在 EF6 中使用异步方法。
public async Task<Store> FindClosestStore(DbGeography location)
{
using (var context = new StoreContext())
{
return await (from s in context.Stores
orderby s.Location.Distance(location)
select s).FirstAsync();
}
}
但是,我可以执行以下操作(语法是近似的,我是靠记忆来做的):
public async Task<Store> MyAsyncMethod(DbGeography location)
{
return await Task.Run(() => FindClosestStore());
}
我的意思是,我可以使用 Task.Run 来调用第一个方法,即非异步,以等待结果。目前,是我用来调用异步任何方法的方式,而不仅仅是 EF。这也是异步调用还是真正的异步调用是在我使用 EF6 异步方法时?
为什么在新版本的 EF6 中需要异步方法?只是为了简单?