1

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

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

我应该研究什么 Windows API?(例如,FileWatcher api 的时间版本)

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

4

5 回答 5

1

AppControls 有一个CronJob组件,您可以使用它来创建计划事件。这使您的程序不必每分钟醒来并检查时间表本身。相反,只需安排作业并指示回调方法。

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

于 2009-02-27T21:07:35.647 回答
1

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

于 2009-02-27T21:42:02.880 回答
1

我认为您真正想要的是一个通用框架,用于您的应用程序报告某些东西(您或系统消息或跟踪或性能、事件日志等),并通过一些进程间协议接收一种接收消息和响应的方式。

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

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

我能想到的事件: - 开始 - 停止 - 错误 - 正常的日志消息 - 当然还有你的应用程序所做的特定事情。

我认为可能有现有的类/框架可以做到这一点 - 你必须检查一下。

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

不过,有很多方法可以做你想做的事。这些只是我的想法。

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

于 2009-02-27T22:22:23.860 回答
1

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

  1. 要安排某些事件(包括运行应用程序):使用 JVCL 中的 TJvScheduledEvents。恕我直言, JVCL是最好的 Delphi 开源库,拥有大量组件、开发人员和支持。TJvScheduledEvents 非常简洁,使用线程进行事件调度,并且您在 JVCL 中有一个详细的事件编辑器(不过它需要一个小技巧才能使用它)。

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

...继续 Windows API 路由,您需要标头(可能没有翻译),您会遇到我们最亲爱的指针/PChars 等。当然,从头开始构建一切是不值得的,但是当这已经完成时以德尔福的方式,为什么不使用它?

于 2009-02-28T11:07:29.013 回答
0

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

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

于 2009-02-27T20:55:12.243 回答