任务<bool>导致实体框架挂起

时间:2018-06-01 00:51:44

标签: c# entity-framework async-await

当我将方法签名更改为任务实体框架时,会在SaveChanges处挂起。为什么会发生这种情况?

此代码失败

public async Task<bool> SaveAsync(agency agency)
    {
        using (var ctx = new AvnEntities())
        {
            try
            {
                ctx.agencies.Add(agency);
                await ctx.SaveChangesAsync();
                return true;
            }
            catch (System.Exception)
            {
                return false;
            }
        }
    }

此代码有效

public async Task SaveAsync(agency agency)
    {
        using (var ctx = new AvnEntities())
        {
            try
            {
                ctx.agencies.Add(agency);
                await ctx.SaveChangesAsync();
            }
            catch (System.Exception)
            {
                throw;
            }
        }
    }

1 个答案:

答案 0 :(得分:-1)

作为Mick的评论和此帖Asyn-Hanging

我创建了一个死锁,因为在我的UI线程中我正在等待获取Task.Result。