我在一个应用程序中使用MediatR和CQRS。以下两个语句存在于许多模块中,并且可能在应用程序中同时调用(这是一个Blazor应用程序)。
await Mediator.Send(new AddIdCommand { Id = id });
并且
await Mediator.Send(new DeleteIdCommand { Id = id });
以下是更新同一文本文件的命令。
public class AddIdCommand : IRequest
{
public int Id { get; set; }
public class AddIdCommandHandler : IRequestHandler<DeleteIdCommand>
{
public async Task<Unit> Handle(AddIdCommand request, CancellationToken cancellationToken)
{
// .... update the text file with the Id deleted
}
}
}
public class DeleteIdCommand : IRequest
{
public int Id { get; set; }
public class DeleteIdCommandHandler : IRequestHandler<DeleteIdCommand>
{
public async Task<Unit> Handle(DeleteIdCommand request, CancellationToken cancellationToken)
{
// .... update the text file with the Id added
}
}
}
....
protected IMediator Mediator => _mediator ??= HttpContext.RequestServices.GetService<IMediator>();
< p >这两个命令中的Handle(...)
是否总是按顺序调用?(因此不必担心多个进程更新同一文件的问题。)< /p >
await
通常意味着等待,除非底层发生了一些奇怪的事情。 - TheGeneral