You compare the LastStartUtc with _notRunTasksInterval, that is 1800 seconds, and you should add the time configured in task, so this way, all my tasks are selected and are started one, by next code.
It's by design. nopCommerce finds task with "run period" set to more than 30 minutes and which were not run during last 30 minutes. It's not related to the issue you described in the original post.
It's by design. nopCommerce finds task with "run period" set to more than 30 minutes and which were not run during last 30 minutes.
This is what causing the "issue". All tasks ran exactly on their time (some 86400, others more), but after nop restart, that code detect that "were not run during last 30 minutes" and run them again.
If you are able to specify the run-time of a task, it cant run always when nop restart else if the run-time is over, or the task could do something wrong. Else we have to specify an exact hour or another time check inside each task to block the task execution, and then, specify a run-time is useless.