构建调度应用程序需要考虑哪些Windows API?

时间:2009-02-27 20:48:44

标签: windows delphi scheduling

为什么不使用Windows调度程序? 我有几个应用程序必须根据业务规则在特定时间运行,而不是典型的每个工作日下午1点。

我还需要一种方法让应用程序提供有关其进度的反馈,以便我可以制定规则,以便在应用程序运行缓慢或甚至不再运行时通知我。

我应该研究哪些Windows API? (比如,FileWatcher apis的时间版本)

让应用程序通知调度程序进度(文件,套接字,Windows消息,???)的最佳方法是什么?

5 个答案:

答案 0 :(得分:1)

AppControls有一个CronJob组件,可用于创建预定事件。这样可以避免程序每分钟唤醒并检查计划本身。相反,只需安排作业并指出回调方法。

我已经使用这个组件自己安排工作,并且对它的工作方式非常满意。

答案 1 :(得分:1)

对于Vista / Win2k8,有一个很棒的Task Scheduler 2.0 API:http://msdn.microsoft.com/en-us/library/aa384138(VS.85).aspx。以前的版本有Task Scheduler 1.0 API,但我从未使用它。

答案 2 :(得分:1)

我认为你真正想要的是一个应用程序的通用框架,它可以报告某些内容(你或系统消息或跟踪或执行,事件日志,等等),还可以通过一些进程间协议接收一种接收消息的方式并回应。

根据报告,您可以更改计划或进行更改等。

因此,有一些监控应用,然后您的其他每个应用都会进行常见报告。

我能想到的事件: - 开始了 - 停了 - 错误 - 正常的日志消息 - 当然还有你的应用所做的具体事情。

我认为可能存在这样做的类/框架 - 你必须检查一下。

如果是我,我会提供一个可以与所有其他应用程序通信的服务,甚至可能是一个http服务器。它可以将消息路由到特定的应用程序,并开始停止这些进程并查询它们。

有很多方法可以做你想要的。那些只是我的头脑。

或者,您可能只能将这些服务作为服务,并处理发送给他们的消息。他们的正常处理在他们被一些任务命令“唤醒”之前什么都不做。

答案 3 :(得分:1)

你有一个问题。通常你应该分开它们。但是让我们忽略这一点并尝试回答。

  1. 要安排某些事件(包括运行应用程序):使用JVCL中的TJvScheduledEvents。恕我直言JVCL是最好的Delphi开源库,周围有大量的组件,开发人员和支持。 TJvScheduledEvents非常简洁,使用线程进行事件调度,你也可以在JVCL中为你的事件编写一个详细的编辑器(虽然它需要一个小的黑客来使用它)。

  2. 从应用程序向(远程)中心点提供“反馈”:一个非常非常好的解决方案(如果您的要求允许)是将应用程序的进度记录在表中(让我们称之为LOG )在Firebird服务器上。在LOG中,您可以拥有以下字段:COMPUTER,USERNAME,APPNAME,MSG,LOGDATE(等等)。在LOG表的After Insert触发器中,您可以触发事件(让我们将其称为NEW_LOG)。在您的控制台应用程序中,您可以注册此活动的兴趣,因此,您的应用程序将自动更新您的任何应用程序中发生的所有事情,因此您可以进行日志分析,图表等。当然,您可以使用IB,但IB成本。

  3. ...在Windows API路由上你需要标题(可能没有翻译),你会遇到我们最亲爱的指针/ PChars等等。当然,从头开始构建一切都是不值得的,但是当这个已经用Delphi方式完成了,为什么不使用它?

答案 4 :(得分:0)

将服务与定期触发的计时器(例如每分钟)一起使用。它读取计划并查看是否在下一次迭代之前到期。如果是这样,你可以执行它们。

您可以添加显示所有正在运行的应用的界面。有关使用桌面应用程序的反馈和查询。