c# - 在给定时间内执行任务
问题描述
我正在创建一个程序来每“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)
解决方案
推荐阅读
- docker - 如何在 alpine docker 中安装工具
- hibernate - 在hibernate中建模一对多关系的最佳方法
- javascript - javaScript 过滤嵌套对象和数组
- flutter - setState() 在更新 UI 方面是否有任何限制
- react-native - AsyncStorage getItem 和 setItem 在 Android 设备中不起作用
- java - Spring Boot Mongo DB .yml 配置
- javascript - 如何使用 javascript 将 div 重置为其原始样式
- mysql - 当column2 =“Y”时,如何计算column1中使用值X的次数?
- java - RxJava - Observable 的压缩列表如果抛出异常如何获得成功响应
- c - 如何打破数学运算符的长线?