相关疑难解决方法(0)

异步/等待的体系结构

如果你在架构中的较低级别使用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();
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我的业务层是这样的:

public abstract class ApplicationBCBase<E> : IEntityBC<E>
{
    public async virtual Task Save()
    {
        await repository.Save();
    }
}
Run Code Online (Sandbox Code Playgroud)

当然,我的UI中的方法在调用时会遵循相同的模式.

这是:

  1. 必要
  2. 表现不利
  3. 只是一个偏好的问题

即使在单独的图层/项目中没有使用它,如果我在同一个类中调用嵌套方法,则同样的问题也适用:

    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 
        ... …
Run Code Online (Sandbox Code Playgroud)

.net c# asynchronous async-await c#-5.0

58
推荐指数
2
解决办法
8332
查看次数

在异步方法结束时,我应该返回还是等待?

在任务返回异步方法结束时,如果我调用另一个异步方法,我可以使用await它或return它的任务.每个的后果是什么?

    Task FooAsync()
    {
        return BazAsync();  // Option A
    }

    async Task BarAsync()
    {
        await BazAsync(); // Option B
    }
Run Code Online (Sandbox Code Playgroud)

c# async-await

35
推荐指数
1
解决办法
4538
查看次数

标签 统计

async-await ×2

c# ×2

.net ×1

asynchronous ×1

c#-5.0 ×1