Я разрабатываю веб-API, используя шаблон CQRS. У меня есть команда Создать автора.
Вот мой обработчик команд:
internal sealed class AddCommandHandler : ICommandHandler<CreateAuthorCommand, Author>
{
private readonly IUnitOfWork _unitOfWork;
public AddCommandHandler(IUnitOfWork unitOfWork)
{
_unitOfWork = unitOfWork ?? throw new ArgumentNullException(nameof(unitOfWork));
}
public async Task<Result<Author>> Handle(CreateAuthorCommand command)
{
var nameResult = Name.Create(command.FirstName, command.LastName);
var birthDateResult = BirthDate.Create(command.DateOfBirth);
var mainCategoryResult = Entities.Authors.MainCategory.Create(command.MainCategory);
var authorResult = Result.Combine(nameResult, birthDateResult, mainCategoryResult)
.Map(() => new Author(nameResult.Value, birthDateResult.Value, null, mainCategoryResult.Value));
if (authorResult.IsFailure)
return Result.Failure<Author>(authorResult.Error);
await _unitOfWork.AuthorRepository.AddAsync(authorResult.Value);
await _unitOfWork.SaveChangesAsync();
return Result.Success(authorResult.Value);
}
}
В моем проекте установлены пакеты Microsoft.CodeAnalysis.FxCopAnalyzers
и Roslynator.Analyzers
nuget. Эти пакеты показывают следующее предупреждение и сообщение для await _unitOfWork.AuthorRepository.AddAsync(authorResult.Value)
и await _unitOfWork.SaveChangesAsync()
.
CA2007 Рассмотрите возможность вызова ConfigureAwait на ожидаемая задача
RCS1090 Вызовите 'ConfigureAwait(false)'.
На этом .ConfigureAwait
размещено много вопросов.
Но может ли кто-нибудь объяснить мне с точки зрения непрофессионала, почему я должен это делать? Добавление .ConfigureAwait(false)
удалило предупреждение и сообщение. Но мне нужно четко понимать, когда .ConfigureAwait(true)
и когда .ConfigureAwait(false)
. Пожалуйста, помогите и научите меня.
.ConfigureAwait(false)
с моимиawait
вызовами? - person fingers10   schedule 16.08.2020ConfigureAwait(false)
везде в вашей библиотеке. Если он принимает делегатов, то вызов их вне контекста синхронизации может быть проблемой. Вы можете увидеть здесь, как библиотека Polly справляется с эта дилемма. - person Theodor Zoulias   schedule 16.08.2020