65.9K
CodeProject 正在变化。 阅读更多。
Home

Crontab Linux 类 Windows 服务

starIconstarIconstarIconstarIconemptyStarIcon

4.00/5 (7投票s)

2009年8月30日

CPOL

3分钟阅读

viewsIcon

47457

downloadIcon

570

一个 Windows 服务, 它使用接口来工作, 类似于 Linux Crontab 服务。

什么是 Windows 服务管理器?

这是一个类似于 Linux Crontab 的 Windows 服务,允许您以非常灵活和可调度的方式指定必须执行的应用程序。其目的是在 .NET 中以良好的计划目标运行库,允许库中的每个日常活动按预期执行。

在上图中,我们看到了这个系统的主要组件,这些组件允许运行任何实现标准接口IService的组件。此接口基于服务的核心方法:Start()Stop()Pause()Continue()

OnStart() method

启动服务时,它会读取管理和执行 Windows 服务的进程,并根据设定的计划执行。每个进程都必须实现IService接口,这将允许 Windows 服务以类似于 Windows 下服务的方式操作进程。

ReadCrontab()方法负责读取要执行的文件。

ReadCrontab() method

定义了包含必须运行的进程列表的数据源后,服务每 30 秒检查一次此列表,以实例化和运行任何已指定要运行的进程。

如果那是设置案例的确切时间点,则从程序集中读取、实例化和执行它,并向它传递的任何参数都告知调度进程。

DoCrontabItem() method

服务记录进程窗口,并实例化和运行 - 在创建允许进程在运行时更新服务窗口记录的信息的对象“Item”之前 - 因此,如果由于某种原因,进程在服务的意外窗口中中断,下次或启动时,可能会收集此类信息,实例化并运行该进程,以便它完成其任务。

实现 IService 接口

接口的实现非常简单,并允许 Windows 服务与进程以及反向通信。例如,进程可以通过设置ItemException属性的值来返回执行过程中发生的任何异常。“Success”属性指示进程是否在没有任何错误的情况下执行 - 它基于“ItemException”属性的值来设置此值:如果该属性等于“零”,则返回值为true

Samples class diagram

作为示例提供的可下载代码包含两个类:PersonAddressAddress类只包含方法声明,而Person类的实现非常简单易懂。

Person 的实现运行一个循环,该循环将记录从参数“Commom.Process.Item”开始直到完成的进程进度。

Sample implementation class

免责声明

我的英语不太好,所以我没有什么灵感可以进一步解释,但目的是在 .NET 中实现一个解决方案,允许运行多个类似于 Linux Crontab 的进程。

如果您想以任何方式贡献,请这样做。我希望改进此代码并使其对更多人有用。

我还想强调,并非此处提供的全部代码都是我完全创作的 - 不幸的是,我在我的文件中找不到原始文章以给予应得的荣誉,但我可以保证此处的所有代码都可以使用和改编,因为它们都是免费的。

所以请随意使用。

历史

这段代码是我开始使用 C# 时就实现的一个长期工作的成果。当时我还不知道反射。这是 2009-08-29 更新的最新版本。

© . All rights reserved.