У меня есть объект 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));