Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 处理作为hangfire作业运行的MediatR事件中抛出的异常_C#_.net_Jobs_Hangfire_Mediatr - Fatal编程技术网

C# 处理作为hangfire作业运行的MediatR事件中抛出的异常

C# 处理作为hangfire作业运行的MediatR事件中抛出的异常,c#,.net,jobs,hangfire,mediatr,C#,.net,Jobs,Hangfire,Mediatr,我将mediatR配置为使用Hangfire运行事件,如下所示: public static class MediatRExtension { public static void Enqueue(this IMediator mediator, INotification @event) { BackgroundJob.Enqueue<HangfireMediator>(m => m.PublishEvent(@event)); } }

我将mediatR配置为使用Hangfire运行事件,如下所示:

public static class MediatRExtension
{
    public static void Enqueue(this IMediator mediator, INotification @event)
    {
        BackgroundJob.Enqueue<HangfireMediator>(m => m.PublishEvent(@event));
    }
}

public class HangfireMediator
{
    private readonly IMediator _mediator;

    public HangfireMediator(IMediator mediator)
    {
        _mediator = mediator;
    }

    public void PublishEvent(INotification @event)
    {
        _mediator.Publish(@event);
    }
}
现在我称之为它调用的API端点:

_mediator.Enqueue(@event);
return Ok();
问题是当我在EventHandler(从mediatr)中抛出异常时。在hangfire dashboard中,此作业位于Successed(成功)选项卡中,如下所示

如何让hangfire处理此异常并再次重试作业?此作业应失败/已计划。但是mediatr事件处理程序中的这个异常似乎没有告诉hangfire它就接受了异常…

我发现
Wait()
是解决方案:

    public void PublishEvent(INotification @event)
    {
        _mediator.Publish(@event).Wait();
    }
但是我不知道为什么…

我发现
Wait()
是解决方案:

    public void PublishEvent(INotification @event)
    {
        _mediator.Publish(@event).Wait();
    }
但我不知道为什么