3
私はリポジトリコードを簡略化し、共通の機能を提供するためにFuncsを使いたいと思っています。今、このコードに基づいて 問題:C#のAsync Func - 正しいasyncが使用を待っています
namespace Test
{
public class Demo
{
public Task<Person> GetAsync1(Guid id)
{
return ExecuteAsync(context => context.Persons.GetAsync(id));
}
public async Task<Person> GetAsync2(Guid id)
{
return await ExecuteAsync(async context => await context.Persons.GetAsync(id));
}
public Task<Person> GetAsync3(Guid id)
{
return ExecuteAsync(async context => await context.Persons.GetAsync(id));
}
public Task<TOut> ExecuteAsync(Func<Context, Task<TOut>> func)
{
using(var context = new Context())
{
return func(context);
}
}
}
}
ここに私のために問題を正しく非同期funcを呼び出す方法になりました。この3つのGetメソッドのうち正しいものはどれですか? 最初のものでは、この時点でハングアップするため、デッドロックが発生すると思います。 2番はうまく動作しますが、ここで2つの非同期/待機は、タスクの再ラッピングのために正しいとは思いません!
Ouhh。私は完全にそれを逃した。それから私は間違ったトラックに完全にはいませんでした。本当にありがとう! – PeterLiguda