首页 > 其他 > 详细

hangfire定时任务 方法未定义

时间:2021-02-22 20:16:28      阅读:141      评论:0      收藏:0      [点我收藏+]

废话少说,直接上代码:

/// <summary>
/// 开启定时联动定时任务
/// </summary>
public void StartTimingTouchLinkAsync()
{
    string recurringJobId = "设备联动定时执行";
    string cronStr = "*/5 * * * * *";
    RecurringJob.AddOrUpdate(recurringJobId,this.TimingTouchLinkAsync(), cronStr, TimeZoneInfo.Local);
}

/// <summary>
/// 定时触发(每5秒) 联动触发(从关系库获取数据)
/// </summary>        
/// <returns></returns>
[UnitOfWork]
public virtual async Task TimingTouchLinkAsync()
{
    /***省略部分代码 ***/
   var isMeet = await IsMeetCondition(conditionSymbol, conditionValue, intimeValue);
    /***省略部分代码 ***/
   //触发执行联动
    await this.DoLinkAsync(currentLinkId);
    /***省略部分代码 ***/
}

 

定时任务执行结果:

技术分享图片

 

 

System.InvalidOperationException: Recurring job cant be scheduled, see inner exception for details.
 ---> Hangfire.Common.JobLoadException: Could not load the job. See inner exception for the details.
 ---> System.InvalidOperationException: The type `Awing.IBMS.Application.Business.LinkAppService` does not contain a method with signature `TimingTouchLinkAsync()`
   at Hangfire.Storage.InvocationData.DeserializeJob()
   --- End of inner exception stack trace ---
   at Hangfire.Storage.InvocationData.DeserializeJob()
   at Hangfire.RecurringJobEntity..ctor(String recurringJobId, IDictionary`2 recurringJob, ITimeZoneResolver timeZoneResolver, DateTime now)
   --- End of inner exception stack trace ---
   at Hangfire.Server.RecurringJobScheduler.ScheduleRecurringJob(BackgroundProcessContext context, IStorageConnection connection, String recurringJobId, RecurringJobEntity recurringJob, DateTime now)

 

原因分析:

明明有TimingTouchLinkAsync()方法,错误提示却还是不存在该方法,应该是方法中出现了错误。

因为TimingTouchLinkAsync()方法中同步方法、异步方法并存,故该方法可能出现同步异步执行时间混乱问题。

解决办法是为该方法。

1.方法添加属性 UnitOfWork

2.方法采用虚方法 virtual

3.注意方法中调用的其他方法也要采用上述2条。

 

hangfire定时任务 方法未定义

原文:https://www.cnblogs.com/dyhao/p/14431775.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!