Код: Выделить всё
...
try
{
OptimizationTracker.Execute("Run this", () =>
{
new a(source).Update(theTransaction);
if (theTransaction.Status == Successful)
{
Task.Run(async () => await new b(source).NotifyAsync(theTransaction));
}
}, transactionReference);
}
...
< /code>
public Ib Update(Ib ac)
{
try
{
_repository.DbContext.BeginTransaction(_theDataSource);
var result = _repository.Update(_theDataSource, ac);
_repository.DbContext.CommitTransaction(_theDataSource);
return result;
}
catch (AggregateException ex)
{
foreach(var e in ex.InnerExceptions)
{
ClubLog.LogException(ex);
}
throw;
}
catch (Exception ex)
{
_repository.DbContext.RollbackTransaction(_theDataSource);
throw ex;
}
}
< /code>
This snippet of code is used in a distributed system.
new a(source).Update(theTransaction)< /code> всегда выполняется.
Task.Run(async () => await new b(source).NotifyAsync(theTransaction))В чем может быть причина об этом и как мне с этим справиться?
Я ожидал, что все успешные транзакции будут переданы в NotifyAsync и обработаны, но похоже, что некоторые успешные транзакции вообще не доходят.
(Извините, если было сложно читать английский не мой родной язык)
Подробнее здесь: https://stackoverflow.com/questions/793 ... -condition
Мобильная версия