C# MediatR NotificationHandler开火并忘记

C# MediatR NotificationHandler开火并忘记,c#,mediatr,fire-and-forget,C#,Mediatr,Fire And Forget,如何使MediatR通知处理程序启动并忘记 我的示例代码: public class BackupDatabase : INotification {} public class BackupDatabaseNotificationHandler : INotificationHandler<BackupDatabase> { public async Task Handle(BackupDatabase notification, CancellationToken ca

如何使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);
}
public类backupdatebase:INotification{}
公共类BackUpdateBaseNotificationHandler:INotificationHandler
{
公共异步任务句柄(BackUpdateBase通知、CancellationToken CancellationToken)
{
等待任务。延迟(100000000);
}
}
公共异步任务SomeAction()
{
wait_mediator.Publish(newbackupdatebase());
返回Json(true);
}

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

Mediatr通知处理程序已经启动并忘记了

处理此问题的另一种方法是将后台任务排队以完成工作。请看类似的内容,并在_mediator.Send()或_mediator.Publish()方法中实现它

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

如果你不能选择“绞刑”


希望这有帮助

你应该非常小心地使用“开火然后忘记”的措辞。这通常意味着“执行此代码,但我不会跟踪它是否成功完成”。对于一些关键的事情,比如备份数据库,您很可能不希望真正的火灾和遗忘。您希望工作异步进行。@mason,数据库备份就是一个例子。更好的方法是发送电子邮件和短信。不过,如果你的应用突然无法发送电子邮件或短信,而你发现的唯一方法是你的客户开始抱怨,那该怎么办?这些也不应该是火和遗忘。如果您正在编写代码,则希望该代码能够成功运行。如果没有,你想知道它,这样你就可以修复它。