लेन-देन 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(
एक ही समय में कई थ्रेड्स की सूची में।