1) В следующем примере тайм-ауты TransactionScope TS1 на стороне клиента. Но если TS1 не наберет Complete()
и не проголосует за принятие транзакции, исключение не выдается:
TimeSpan timeout = TimeSpan.FromSeconds(2);
using (TransactionScope scope1 = new TransactionScope(TransactionScopeOption.RequiresNew, timeout))
{
proxy.GetAnimal(16); // returns after 10 seconds
Thread.Sleep(6000);
}
Я понимаю, что без вызова Complete () транзакция не будет зафиксирована, но я не понимаю, почему исключение тайм-аута не должно создаваться независимо от того, зафиксирована транзакция или нет? *
2) Даже если proxy.GetAnimal()
вызывается после истечения времени ожидания транзакции, вызов все равно будет успешным:
TimeSpan timeout = TimeSpan.FromSeconds(2);
using (TransactionScope scope1 = new TransactionScope(TransactionScopeOption.RequiresNew, timeout))
{
proxy.GetAnimal(); // returns after 10 seconds
Thread.Sleep(6000);
proxy.GetAnimal(); // shouldn't this call cause an exception?
}
Разве исключение не имеет смысла?