首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在.NET 4.0的Microsoft.Bcl.Async的TransactionScope中支持异步方法?

如何在.NET 4.0的Microsoft.Bcl.Async的TransactionScope中支持异步方法?

提问于 2018-02-05 05:50:49
回答 2关注 0查看 345

我有一种类似于:

代码语言:javascript
复制
public async Task SaveItemsAsync(IEnumerable<MyItem> items)
{
    using (var ts = new TransactionScope())
    {
        foreach (var item in items)
        {
            await _repository.SaveItemAsync(item);
        }

        await _repository.DoSomethingElse();

        ts.Complete();
    }
}

这当然有问题,因为TransactionScope不适合异步/等待。

它失败的原因是InvalidOperationException带着信息:

"A TransactionScope must be disposed on the same thread that it was created."

.NET 4.0,不能升级到4.5或4.5.1。因此,我的项目中的异步/等待行为由Microsoft.Bcl.Async NuGet Package

我在这个或任何其他OOB封装找不到TransactionScopeAsyncFlowOption.

如果没有,是否有实现同样结果的替代办法?

相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档