• 我的第一个开源项目:WinServiceTask


    欢迎使用WinServiceTask,注意:此框架针对开发人员。

    源代码地址:
    http://wstask.codeplex.com/

    这是一个作业调试框架,类似于Quartz.Net 

    一、功能摘要:


    1. 启动触发时间采用开源的Quartz.Net项目的Cron表达式:"0 0 12 * * ?" 每天中午12点触发;
    2. 多线程运行各任务,互不干扰;
    3. 自动监视配置文件,配置文件更改后服务重启;
    4. 配置Tasks.config中可以引用公用的资源;
    5. 具体任务中可以引用公有资源,并加入本任务对应的相关参数;
    6. 具体任务配置中加上Settings设置,方便加入一些配置信息,如果还是不能满足,那么就要自定义Extend的扩展了。

    二、运行机制:


    1. 每个任务做为一个独立的运行线程 隐喻:工人
    2. 服务本身做为一个独立线程 隐喻:监督工人
    3. 监督工人每隔 N 秒轮询一次任务,如发现任务的触发时间小于间隔N 即创建该任务并且启动该任务。
    4. 启动后的任务根据启动时间于特定时间执行任务。
    5. 工人工作完本身任务后自动停止。待下一轮监督工人查看时清除任务对象。

    三、任务驱动UML图

    UML类图


    四、项目内容:
    1. support 调用的一些外部类库
    2. CS.Scheduling.Framework 任务调度框架
    3. CS.Scheduling.NUnitTests 一些测试,这个随便写的
    4. CS.Task.DataTransfer 一个数据转存的任务示例(DataTableToDataTable已经完成)
    5. CS.WinServiceManager WindwosService的服务管理器,这个可以算是一个分支了。用来安装和管理实现本框架的AppForm。 
    6. CS.WinServiceTask WindsService的实现示例,该Demo直接调用任务调度框架。

    五、任务实现代码:
    1. 参见CS.Task.DataTransfer.TaskDemo的示例实现及CS.Task.DataTransfer.DataTableToDataTable实用实现
    2. 继承TaskProvider类后,重写protected override Result Work() 即可。
    3. 如果自已扩展了Extend节点,则要重写public override void InitExtend()方法
    4. 具体备置可参见Tasks.config文件

    六、WindService的调试:
    1. 方法一:打开控制台,拖入CS.WinService.Demo的执行程序(该程序还是WinService)加上任一参数 如:-t 后回车
    2. 方法二:通过CS.WinServiceManager安装服务。启用UDP监视器查看即。

    七、更新列表:
    ----udpate:2010-07-07---To:1.3.1 Beta2-----
    1. 配置初始化功能
    2. 明确补全功能,注意:补全功能是按执行结果的XML文件里的最后成功执行时间来计算下一个周期点的。修改补全时间时必须停止服务(肯定是手动大改动)。
    3. Tasks.config配置中增加公用资源部分配置,这样就可以共用一些通用的资源信息了。
    4. 增加所有总服务状态Task4WinService.Status,这个好像还是有问题。
    5. 增加了一个默认的扩展配置保护属性Extend, 如果自定义了扩展配置后可以重写LoadExtendConfig方法 Extend.Settings"key".Value;

    ----udpate:2010-07-26---To:1.3.2 Beta1-----
    1. 调整文件及程序集信息;
    2. 重写预定义好的预定义扩展,预定义扩展是引用公有资源再加上可能的参数组成;
    *3. 注意,具体任务中不要抛出异常,以免使整个服务挂起;
    4. DataTableToDataTable表对表导入任务实现;
    5. Tasks.config中的预扩展中Params参数加入 对<!CDATA[]> 支持,以避免手动转义特殊字符,注:text中有值时会覆盖value中的值。
  • 相关阅读:
    WPF 附件路由事件
    WPF 中的 路由事件
    WPF 中的DataTemplate 的嵌套
    wpf 的style
    C# 中的反射机制
    如何在github上fork以及同步原作者代码
    c# 执行python方法
    转载:c# 获取CPU温度(非WMI,直接读取硬件)
    C# 多个线程一直跑着While(true)
    C# TextBox控件 显示大量数据
  • 原文地址:https://www.cnblogs.com/atwind/p/1885140.html
Copyright © 2020-2023  润新知