如何在Hangfire完成后发出通知

时间:2018-04-16 12:43:42

标签: javascript c# ajax asp.net-mvc hangfire

您好我在MVC 5中使用=IF(OR(AND(E2="Yes",D2=F2),AND(E2="No",OR(F2=111,F2=112,F2=118,F2=119))),C2,0)创建了一个后台作业。我发送后台作业已启动的通知但我不知道如何在后台作业完成时发送通知因为我的ActionResults方法已经返回。

控制器

hangfire

Ajax Call和Javascript通知

public ActionResult RunMedia(int ID)
{
    BackgroundJob.Enqueue<CrawlerSearchRequestModel>(x => x.StoreMedia(ID,"NaturalPerson"));
        obj
       {
         success: true
       };

return JSON(obj, JsonRequestBehavior.AllowGet)
}

由于

1 个答案:

答案 0 :(得分:1)

正如其他人所说,你可以使用signalR或其他协议。要实现此目的,请使用IApplyStateFilter过滤器并实现接口的OnStateApplied方法。

public class YourAttribute : IApplyStateFilter{

    public void OnStateApplied(ApplyStateContext context, IWriteOnlyTransaction transaction)
    {
         if (context.NewState.IsFinal && context.NewState.Name == "Succeeded")
            //Send your message to client via signalR
    }}