Может ли это быть состояние гонки?C#

Место общения программистов C#
Ответить
Anonymous
 Может ли это быть состояние гонки?

Сообщение Anonymous »

Код: Выделить всё

...
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).

В чем может быть причина об этом и как мне с этим справиться?
Я ожидал, что все успешные транзакции будут переданы в NotifyAsync и обработаны, но похоже, что некоторые успешные транзакции вообще не доходят.
(Извините, если было сложно читать английский не мой родной язык)

Подробнее здесь: https://stackoverflow.com/questions/793 ... -condition
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»