c# - MediatR NotificationHandler 即发即忘

标签 c# mediatr fire-and-forget

如何让我的 MediatR 通知处理程序触发并忘记?

我的示例代码:

public class BackupDatabase : INotification {}

public class BackupDatabaseNotificationHandler : INotificationHandler<BackupDatabase>
{
    public async Task Handle(BackupDatabase notification, CancellationToken cancellationToken)
    {
        await Task.Delay(100000000);
    }
}

public async Task<IActionResult> SomeAction()
{
    await _mediator.Publish(new BackupDatabase());
    return Json(true);
}

我知道一种方法是使用 Task.Factory.StartNew,但是还有另一种方法吗?

最佳答案

Mediatr 通知处理程序已经是即发即弃的了。

处理此问题的另一种方法是将后台任务排队以完成工作。看看像 Hangfire 这样的东西并在 _mediator.Send() 或 _mediator.Publish() 方法中实现它。

Hangfire 将使您能够监控后台任务,并能够在需要时自动重试任务。

some other options如果 Hangfire 不是您的选择。

希望这对您有所帮助!

关于c# - MediatR NotificationHandler 即发即忘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52783220/

相关文章:

c# - 如何检查文件当前是否打开或正在写入 .NET?

c# - 通过 MediatR PipelineBehavior 进行单元测试验证

python - Python3.7 中的触发、遗忘和返回值

c# - 如何将 FluentValidation 库与 MediatR IPipelineBehavior 一起使用?

structuremap - ViewModels 作为 MediatR、StructureMap、Caliburn.Micro 的处理程序

javascript - ExpressJs(NodeJs)即发即弃

C# 对“即发即弃”的改进

c# - 什么时候需要 Dispose?

c# - 使用没有分离的服务和存储库的 CQRS 真的会影响代码质量吗?

c# - 转换 Select 以从集合中的 .Last() 获取属性