首页 > 解决方案 > 在给定时间内执行任务

问题描述

我正在创建一个程序来每“x”分钟执行一次特定任务。

例如:

Task A: every 10 minutes (this task takes 5 minutes to complete)
Task B: every 10 minutes (this task takes 5 minutes to complete)
Task C: every 1 hour (this task takes 30 mins to complete)

我在让程序等待每个任务时遇到了一些麻烦,我正在使用 Sleep () 来保持等待,但是时间不准确。

我在不同的线程上运行该进程。

public void Job() {
 while (true) {
  MyClass bot = null;
  try {
   bot = new MyClass(Accounts.FirstOrDefault());
   bot.TwoCaptchaApi = "...";
   bot.GridView = gridLogs;

   bot.Login();

   if (Task1)
    bot.Task1();

   if (Task2)
    bot.Task2();

   if (Task3)
    bot.Task();

   bot.Quit();

   bot.Log("Aguardando....");
  } catch (ThreadAbortException) {
   bot ? .Quit();
  } catch (Exception) {
   bot ? .Quit();
   Job();
  }
  Thread.Sleep(Convert.ToInt32(TimeSpan.FromMinutes(30).TotalMilliseconds));
  bot.Log("Tempo de espera terminado!");
 }
}

这意味着我使用的不是很好……我不知道使用 DateTime() 是否是最好的方法……以防万一初始化一个全局变量并存储每个任务的最后一个活动的日期和时间

DateTime LastActivity = DateTime.Now;
if (LastActivity.AddHours (1)> DateTime.Now)

标签: c#

解决方案


推荐阅读