2017-04-27 105 views
0

我正在开发VB.NET中的Windows应用程序。此应用程序包含多个分析测试。当用户点击特定的测试时,加密的SQL查询将被执行并且相应的输出被粘贴到Excel中。如何在VB.Net中使用Windows窗体应用程序实现调度程序

现在需求是自动调度此任务,其中用户将指定日期和时间,并在该特定时间测试应执行。此外,SQL查询以加密格式存储用于安全目的,所以我不能使用SSIS包或SQL作业代理来安排任务。

对于实现.NET Windows应用程序调度程序,可以使用哪些可能的方法/解决方法用于此特定方案?

+0

您可以创建一个简单的控制台应用程序来处理,然后通过Window自己的调度程序运行它? – Gimly

+0

我同意Gimly的观点,即批处理或日常任务需要最好地执行,以便将这些测试或报告作为与控制台应用程序不同的可执行文件。那么只需在Windows任务调度程序上创建一个任务 –

+0

我们正在使用[Quartz Scheduler](https://www.quartz-scheduler.net/),Windows计划任务不会执行任务。 –

回答

0

好吧,我会试着解释我们使用的方法。我们有一个网络用户界面,一个数据库和两个窗口服务, 用于更新计划信息和一个负责导出到Excel的服务。

数据库

的表与他的日程安排信息一起保存我们的查询。 用于存储所有出口的表格,因此我们可以保留历史记录。

的Web UI

通过一个webinterface我们可以存储需要被调度的基础上, 一些自动执行每小时,一些日常的,有的每周和每月的一些疑问。 在界面上,用户可以根据时间表制定自己的病态配置。

当查询被保存时,我们立即通过自写的 SQL函数计算此查询的nextruntime并将此值存储在数据库中。每次更新发生记录,前查询更改或日程安排信息更改时,我们都会更新上次修改的字段。

服务

我们的第一个服务在该领域nextruntime不为空的所有信息的读取。我们将这些信息保存在对象列表的内存中。 每隔5分钟我们检查是否有对该导出进行的更改,因为可以更改查询或更新日程表信息 。如果我们找到更新的记录,我们会在对象列表中更新此信息。 在同一服务中,我们每30秒在对象列表上循环一次,看看nextruntime是否等于实际的系统日期时间。如果是这样,我们向具有一定状态的第二个表添加记录,因此第二个服务知道哪些记录需要处理,并且我们也保留增量序列号,以便按顺序导出它们。

我们的第二个服务轮询第二个表,并负责执行查询,将结果导出到Excel,并在完成后根据计划信息更新第一个表中的nextruntime字段。为了创建Excel文件,我们使用了OpenXml库。

我希望这对你有点清楚。

相关问题