私は次のような場合:TransactionScopeはParallel Extensionsで動作しませんか?
Using scope = New TransactionScope()
entries.Content.ReadAs(Of IList(Of WebMaint)).AsParallel.ForAll(Sub(entry)
_repos.Update(entry)
End Sub)
scope.Complete()
End Using
のTransactionScopeが動作しません。 scope.completeにブレークポイントを置くと、トランザクションはアクティブではなく、更新は既に完了しています。
私はそれを変更した場合:
Using scope = New TransactionScope()
entries.Content.ReadAs(Of IList(Of WebMaint)).ToList().ForEach(Sub(entry)
_repos.Update(entry)
End Sub)
scope.Complete()
End Using
すべてが期待どおりに動作します。誰もがなぜ並列版が正しく動作しないのか知っていますか?