2016-02-16 6 views
1

В C# я использую TransactionScope(). Если тайм-аут TransactionScope() совершает транзакцию или отменяется?Что происходит, когда тайм-аут TransactionScope

+1

Только одно из этих действий будет * нормальным * при условии, что никакая нормальная транзакция не должна быть таймаутом, и нет способа узнать, завершено ли действие, которое транзакция должна защитить (в конце концов, если она была завершена, почему транзакция не была выполнена до истечения таймаута?) –

+0

Почему система должна совершить транзакцию, которая находится на середине обработки? Это почти гарантированно испортило данные и не служит никакой заметной цели. – usr

ответ

0

Стандартное значение времени ожидания составляет 10 минут. Если тайм-аут TransactionScope запущен, транзакция будет выполнять возврат. Если вы не совершили транзакцию, состояние не изменится (принципы ACID).

ACID-принципы Wiki: https://en.wikipedia.org/wiki/ACID

можно изменить тайм-аут в файле .config, используя maxTimeout. https://msdn.microsoft.com/en-us/library/system.transactions.configuration.machinesettingssection.maxtimeout(v=vs.110).aspx