Parallel.ForEach
にトランザクションが流れない 、手動で取引を行う必要があります。
//Switched to a thread safe collection. var documents = new ConcurrentQueue<ExtractedContent>(); using (var ts = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { var attachments = await dao.GetAttachmentsAsync(); //Grab a reference to the current transaction. var transaction = Transaction.Current; Parallel.ForEach(attachments, a => { //Spawn a dependant clone of the transaction using (var depTs = transaction.DependentClone(DependentCloneOption.RollbackIfNotComplete)) { documents.Enqueue(a.ToDbDocument()); depTs.Complete(); } }); ts.Complete(); }
プレ>私も
List<ExtractedContent>
から切り替えましたConcurrentQueue<ExtractedContent>
に.Add(
の呼び出しが許可されていないため 同時に複数のスレッドからのリストに。