一个自动执行job(exe或dll)程序

最近在一个项目中有很多功能需要用到自动定时执行,本来考虑使用windows自带的执行计划,但是发现执行计划太过局限有些问题无法解决,于是做了一个定时执行job工具。程序可以定时运行exe或者执行继承了指定接口的C#的dll组件。下面介绍一下使用方法

一、建立配置文件

程序运行时需要先读取配置文件来确定要如何执行计划。通过选择“操作-->设置配置文件”就可以打开配置文件设置界面(如下图)

1、类型: 可以用于执行计划的程序,包括EXE,DLL(C#且继承了IExec的DLL),WEB

2、路径:要执行的程序所在路径

3、名称:给执行计划设置个名称用于区分

4、维持对象:选择后每次开始执行时使用第一次执行时创建的对象不创建新的对象,否则每次都创建一个新的执行对象。如:当选择类型为DLL并且需要每次执行时需要知道上一次执行时的一些参数,选择了维持对象后,你在对象中存储的一些对象将被保存,因为每次执行时都是使用第一次执行时创建的对象而不是新的。当选择类型为EXE时开始执行时会用上一次执行时创建的process对象启动。

5、单线程:选择后只会创建一个执行线程。很多时候会发生一个执行计划还未结束但下一次执行时间又到了,这个时候当选择了单线程后程序会等待当前线程结束才会开始下一次执行。反之将会创建出新的线程来执行。

6、显示界面:当类型为EXE时选择在开始执行时是否显示界面

7、间隔时间:每次执行间隔时间,以秒为单位

8、超时时间:执行计划执行时间超过设置的超时时间后,将会按照“超时操作”设置来执行接下去的操作。当设置为0时将无限期等待执行下去。

9、首次日期:首次执行的日期

10、首次时间:首次执行的时间,首次日期+首次时间,程序会在次第一次执行计划。

11、重复次数:默认为0,重复次数代表此计划最多执行几次,当设置为0时执行次数无限制。

12、超时操作:超时后需要如何处理,EXIT直接退出当前线程WAIT继续等待(等同于超时时间为0)

13、类名:如果设置为DLL,则需要告诉我本次执行计划调用的dll中的那个类(类名包含命名空间,需要此参数反射执行对象)。


程序可以同时执行多个任务,只需要创建多个配置文件即可。你可以直接将多个执行计划的配置文件放到config目录下,这样每次启动时直接选择“快速开始”就可以自动导入config目录下的配置文件执行了。当然你也可以“打开文件”或“打开目录”方式导入配置文件,然后选择“运行”来开始执行计划。


二、显示执行计划中的文本信息

在运行DLL时我们往往希望看到一些执行时的文本,以便于以后的监视和调试,你只要在左边的计划列表中选择一个计划并打开快捷菜单选择“跟踪”就可以将右边文本框只想选择的计划,此计划DLL中通过AppConfig对象的Show方法输出的内容就会显示在文本框中。



三、创建执行计划DLL

执行计划必须继承IExec接口,这个接口需要实现2个方法

void Exec(AppConfig dic)

void Finally()

Exec将在每次执行时调用也就是执行计划具体做的事情,Finally每次执行完毕后调用

四、AppConfig

AppConfig对于当前计划是全局,无论你是否选择维持对象,这个对象都会一直存在,它提供了一些公共存储空间和一些基本配置信息。成员包括:

Setting:这个对象就是一个公共存储空间,你可以在里面共享一些信息给(当前执行计划下)其他线程(或以后的线程)使用

GlobalSetting:它会创建一个文件用来完成跨进程共享一些信息。

BasePath:程序所在的目录,因为反射DLL时组件文件可能并不在当前工作目录下所以你调用方法获取工作目录时获得的是ExeWindow.exe所在的目录,此参数给出被调用的执行程序所在目录。

ConfigPath:配置文件路径

Show(string):Show方法可以将一些文本内容显示到前台文本框中(已经选择了当前执行计划为显示对象)

AppConfig会在实现了IExec接口的DLL中传入。当然如果你是EXE程序也可以使用其中的某些方法比如GlobalSetting,AppConfig可以直接new出,它的构造函数包含string[],ExecWindow在开始启动一个exe程序时会将“配置名”,“程序所在目录”,“配置文件路径”等参数以启动参数方式传入,在创建EXE程序时可以使用这些启动参数创建AppConfig对象来使用这些信息和GlobalSetting访问共享文件来进行跨进程通讯。


程序下载位置http://download.csdn.net/detail/wsxqaz/4349229

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值