C# MediatR NotificationHandler开火并忘记
如何使MediatR通知处理程序启动并忘记 我的示例代码: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
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,数据库备份就是一个例子。更好的方法是发送电子邮件和短信。不过,如果你的应用突然无法发送电子邮件或短信,而你发现的唯一方法是你的客户开始抱怨,那该怎么办?这些也不应该是火和遗忘。如果您正在编写代码,则希望该代码能够成功运行。如果没有,你想知道它,这样你就可以修复它。