ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

hangfire定时任务 方法未定义

2021-02-22 18:05:22  阅读:290  来源: 互联网

标签:未定义 hangfire Hangfire TimingTouchLinkAsync --- recurringJobId 定时 方法


废话少说,直接上代码:

/// <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 can't 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,Hangfire,TimingTouchLinkAsync,---,recurringJobId,定时,方法
来源: https://www.cnblogs.com/dyhao/p/14431775.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有