c# – 如何跨一组并行任务共享事务

我有一个TransactionScope对象,我想将它用于使用Parallel.ForEach创建的所有任务,我该如何实现?

我想并行写入消息队列,20-50条消息,消息队列是事务性的:

 using (var queue = new MessageQueue(_exportEndpoint))
 {
      var label = string.Format("{0} ComponentId - {1}", DateTime.Now.ToUniversalTime(), componentId);
      queue.Send(contents, label, MessageQueueTransactionType.Automatic);
      _log.WriteInfo("ExportToQueue: Message sent to queue - " + label);
 }

并且主线程正在使用TransactionScope对象,我尝试了以下但是我在事务的提交上得到了一些时间:

var clone = Transaction.Current.DependentClone(DependentCloneOption.RollbackIfNotComplete);
Parallel.ForEach(components.ToList(), c => ExportComponent(c, clone));

最佳答案 排序!

我错过了DependentTransaction的Complete

点赞