私はEF6の非同期メソッドの新機能を見てきました。私は例を見つける。EFでのこの2つの非同期呼び出しの違いは何ですか?
この最初の方法は、例えば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> MyAsyncMethod(DbGeography location)
{
return await Task.Run(() => FindClosestStore());
}
私が意味する、私は最初のメソッドを呼び出すためにTask.Runを使用することができます:
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();
}
}
しかし、私は(syntaxisが、私はメモリでそれを行う、およそ10mlの液体フッ化水素を圧入である)次の操作を行うことができますそれは結果を待つために非同期ではありません。現時点では、私はEFだけでなく、どのメソッドでも非同期呼び出しを使用する方法です。これは非同期呼び出しでも、EF6非同期メソッドを使用すると本当に非同期呼び出しとなりますか?
EF6の新しいバージョンで非同期メソッドが必要なのはなぜですか?単純化のためだけですか?
asyncは構文の砂糖です.Net 4.5の新機能は、ContinueWithを使って同じことをすることができます –