Continuous WebJob with timer trigger

半城伤御伤魂 提交于 2019-12-18 04:02:48

问题


I have written following functions in continuous web job :

public static void fun1([TimerTrigger("24:00:00", RunOnStartup = true, UseMonitor = true)] TimerInfo timerInfo, TextWriter log)
{//Code}

public static void fun2([TimerTrigger("00:01:00", RunOnStartup = true, UseMonitor = true)] TimerInfo timerInfo, TextWriter log)
{//code}

where, fun1 is not getting called again (only once, after starting web job) and fun2 is getting called with 1 min trigger after every process gets completed.

can anyone please explain why? Am I doing anything wrong?


回答1:


You should have a look at the documentation of the TimerTriggerAttribute:

  • The first parameter you specified is the schedule expression: This can either be a 6 field crontab expression or a System.TimeSpan.

A Cron expression can be represented like that:

*    *    *    *    *    *  command to be executed
┬    ┬    ┬    ┬    ┬    ┬
│    │    │    │    │    │
│    │    │    │    │    │
│    │    │    │    │    └───── day of week (0 - 7) (0 or 7 are Sunday, or    use names)
│    │    │    │    └────────── month (1 - 12)
│    │    │    └─────────────── day of month (1 - 31)
│    |    └──────────────────── hour (0 - 23)
│    └───────────────────────── min (0 - 59)
└────────────────────────────── second(0 - 59)

In you case, the expression is a string represening a TimeSpan :

  • "24:00:00" : this job is running every 24 hours, RunOnStartup : this means the job will run when the webjob starts or restarts even if the last run occured in the last 24 hours.

  • "00:01:00" : this job is running every minute, RunOnStartup : this means the job will run when the webjob starts or restarts even if the last run occured in the last minute.

EDIT

From this answer:

  • TimerTrigger - TimeSpan "24:00:00" - The next 5 occurrences as being 24 days apart

This is due to the way TimeSpan.Parse works. If you pass it "24:00:00" strangely enough it will give you back a TimeSpan of duration 24 days. Not sure if this is their intended behavior or a bug on their side, but we simply pass the expression down to them and inherit their behavior. Anyhow, for your purposes, to get 24 hours you can use "1.00:00" (specifying 1 day).



来源:https://stackoverflow.com/questions/36218203/continuous-webjob-with-timer-trigger

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!