首页新闻找找看学习计划

请问Quartz.net 怎么加载外部程序集作为自己的任务?

0
[已关闭问题] 关闭于 2015-10-13 15:37

我想通过Topshelf+Quartz 写一个任务调度系统的壳,现在还刚入门,我想知道,怎么样实现加载外部程序集里默认继承了Ijob的任务,有什么方法?

虔城墨客的主页 虔城墨客 | 初学一级 | 园豆:194
提问于:2015-09-25 09:18
< >
分享
所有回答(2)
0

启动的时候读取插件文件夹.加载程序集,就可以了

吴瑞祥 | 园豆:28729 (高人七级) | 2015-09-25 09:27

我看了一个Demo, 默认有个 StdSchedulerFactory.GetDefaultScheduler(); 方法,获得继承于IJOB下的实例,但还不知道quartz有没有提供通过程序集加载Ijob 子类实例的方法。

    public class ServiceRunner : ServiceControl, ServiceSuspend
    {
        private readonly IScheduler scheduler;

        public ServiceRunner()
        {
            scheduler = StdSchedulerFactory.GetDefaultScheduler();
        }

        public bool Start(HostControl hostControl)

        public bool Stop(HostControl hostControl)
   
    }
支持(0) 反对(0) 虔城墨客 | 园豆:194 (初学一级) | 2015-09-25 09:33
1

在 quartz.plugin.xml.fileNames指定的xml文件里配置就可以了。 默认配置文件名应该是:quartz_jobs.xml

xml里有demo,关注 job-type元素,指定class,dll

iImax | 园豆:3138 (老鸟四级) | 2015-09-25 10:55

          

支持(0) 反对(0) 虔城墨客 | 园豆:194 (初学一级) | 2015-09-25 14:29

这样不行,我创建控制台,并且Type,dll 在同dll下,是可以正常运行的,分开一层放就不行了。

支持(0) 反对(0) 虔城墨客 | 园豆:194 (初学一级) | 2015-09-25 14:30

@虔城墨客: 分开一层放? 没明白。 (PS:不是应该是library么)

支持(0) 反对(0) iImax | 园豆:3138 (老鸟四级) | 2015-09-25 14:33

哦,你是说作业程序的宿主是console咯? 我这边是Windows服务作为宿主,自己开发好dll,配一下xml就可以了

支持(0) 反对(0) iImax | 园豆:3138 (老鸟四级) | 2015-09-25 14:35

@iImax: 我是想做一个壳,创建一个业务层类库,调用这个壳就可以实现一个调度框架了,现在是,业务层在壳里(也就是我截图的QuartzDemo)能正常实现任务调度,但我分层,把业务层放到外部,也就是现在的Application类库,然后引用,没用。

支持(0) 反对(0) 虔城墨客 | 园豆:194 (初学一级) | 2015-09-25 14:37

@虔城墨客: 1.应该无需添加引用。 2. 看下输出log有什么信息(可能需修改config文件 log4net配置才会输出详细日志)

支持(0) 反对(0) iImax | 园豆:3138 (老鸟四级) | 2015-09-25 14:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册