【发布时间】:2013-03-08 09:08:16
【问题描述】:
如果您在架构中的较低级别使用 async/await,是否有必要将 async/await 调用一直“冒泡”,是否效率低下,因为您基本上是为每一层创建一个新线程(异步调用每一层都有一个异步函数,或者它并不重要,只是取决于你的偏好?
我正在使用 EF 6.0-alpha3,以便我可以在 EF 中使用异步方法。
我的仓库是这样的:
public class EntityRepository<E> : IRepository<E> where E : class
{
public async virtual Task Save()
{
await context.SaveChangesAsync();
}
}
现在我的业务层是这样的:
public abstract class ApplicationBCBase<E> : IEntityBC<E>
{
public async virtual Task Save()
{
await repository.Save();
}
}
当然,我的 UI 中的方法在调用时也会遵循相同的模式。
这是:
- 必要的
- 对性能不利
- 只是一个偏好问题
即使这没有在单独的层/项目中使用,如果我在同一个类中调用嵌套方法,同样的问题也适用:
private async Task<string> Dosomething1()
{
//other stuff
...
return await Dosomething2();
}
private async Task<string> Dosomething2()
{
//other stuff
...
return await Dosomething3();
}
private async Task<string> Dosomething3()
{
//other stuff
...
return await Task.Run(() => "");
}
【问题讨论】:
标签: c# .net asynchronous async-await c#-5.0