TransactionScope не работает с параллельными расширениями ?

Если я сделаю следующее :

 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 не работает. Если я t точка останова на 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

Все работает, как ожидалось. Кто-нибудь знает, почему параллельная версия работает некорректно?

6
задан coding4fun 18 November 2011 в 19:42
поделиться