我想要一天只执行一次查询,我知道这可以在C#中使用TaskScheduler。但我没有得到任何适合我要求的例子。任何人都可以为此提供示例代码吗?
答案 0 :(得分:5)
您可以尝试FluentScheduler
。该文档包含您需要的示例代码。首先我认为它仅适用于网络,但现在我认为您也可以将它用于桌面应用程序。但不确定,也没有经过测试。
https://fluentscheduler.codeplex.com/documentation
编辑您还可以使用任务计划程序 -
首先创建一个可以运行并完成所有任务的控制台应用程序。您甚至可以使用它调用其他进程。然后构建可执行文件并将其保存在安全的位置。
然后转到管理工具> Task Sheduler 点击操作>创建新任务新任务。你会看到这样的屏幕 -
在那里选择您的可执行文件和其他权限。
现在添加您想要的日程安排。确保使用日志,因为您将无法直接看到输出。您可以使用Windows事件查看器或写入自定义文本文件以方便使用。
任务计划程序是Windows本身的一部分。它没有 依赖于C#或C ++的任何东西。基本上你告诉窗户它 将定期运行特定的程序。这是工作的 执行程序初始化所有环境并执行适当的 码。所以即使你使用任务调度程序,你必须确保 您正在使用它运行的程序,具有所有其他选项和代码 右。
答案 1 :(得分:2)
Timer可能是最适合您的解决方案。
var timer = new Timer {AutoReset = true, Interval = 30000}; 1s = 1000ms
timer.Elapsed += timer_Elapsed;
timer.Start();
.......
public void timer_Elapsed(object source, System.Timers.ElapsedEventArgs e)
{
// do stuff here that will execute every 30 seconds
}
答案 2 :(得分:2)
如果您需要可靠的调度程序,从头开始编写自己的调度程序可能需要比预期更多的工作量。如果机器重新启动怎么办?如果它在执行时间前10秒发生怎么办?任务应该延迟执行还是根本不执行?数据将保留在哪里?你必须考虑所有这些事情。
或者,您可以使用Quartz.NET。它是流行的Java作业调度框架的C#端口。代码库经过了充分测试和强大。看看这里: http://www.quartz-scheduler.net/