我希望简化我们的代码库,并使用函数提供通用功能。 现在的问题基于以下代码:
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);
}
}
}
}
对我来说,现在的问题是如何正确调用异步函数。 这三个 Get 方法中哪一个是正确的? 使用第一个方法时,我认为会出现死锁,因为它会停在这里。第二个方法可以正常工作,但我认为两个 async/await 不正确,因为任务被重新包装了!