如何创建新的异步任务可以将 CurrentUnitOfWork 保留在 aspboilerplate 中

How to create new Async Task can keep CurrentUnitOfWork in aspboilerplate

我有 API 带有这样的 unitofwork 标签

[HttpPost]
[Route("Book/ReadBookRequest")]
[UnitOfWork(scope: TransactionScopeOption.RequiresNew, isTransactional: true)]

然后我在 api 中开始新任务,如下所示:

var taskBusiness = Task.Factory.StartNew(async () =>
{
    using (_abpSession.Use(tenantInfo.Id, _abpSession.UserId))
    {
         using (var uow = _unitOfWorkManager.Begin(new UnitOfWorkOptions { IsTransactional = false, Scope = System.Transactions.TransactionScopeOption.Required }))
        {
            CurrentUnitOfWork(1) //Current unit of work of uow
            await InsertDatabase();
            using (var uow2 = _unitOfWorkManager.Begin(new UnitOfWorkOptions { IsTransactional = false, Scope = System.Transactions.TransactionScopeOption.Required }))
            {
                //Save data to dabase
                CurrentUnitOfWork(2) //Current unit of work of uow2
                uow2.Complete()
            }
            CurrentUnitOfWork(1) //Now current unit of work of uow = null

        }

    }
});

请帮助我了解为什么我的 CurrentUnitOfWork(1) 在开始新的 uow 后为空。以及如何在我的情况下解决这个问题。 我的流程: 调用 api -> 已创建响应并且任务仍然 运行 将数据保存到数据库 谢谢!

将 StartNew 替换为 Task.Run(()=> blockcode) 它对 me.Thank 你 Stephen Cleary 有效。