我想通过Topshelf+Quartz 写一个任务调度系统的壳,现在还刚入门,我想知道,怎么样实现加载外部程序集里默认继承了Ijob的任务,有什么方法?
启动的时候读取插件文件夹.加载程序集,就可以了
我看了一个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) }
在 quartz.plugin.xml.fileNames指定的xml文件里配置就可以了。 默认配置文件名应该是:quartz_jobs.xml
xml里有demo,关注 job-type元素,指定class,dll
这样不行,我创建控制台,并且Type,dll 在同dll下,是可以正常运行的,分开一层放就不行了。
@虔城墨客: 分开一层放? 没明白。 (PS:不是应该是library么)
哦,你是说作业程序的宿主是console咯? 我这边是Windows服务作为宿主,自己开发好dll,配一下xml就可以了
@iImax: 我是想做一个壳,创建一个业务层类库,调用这个壳就可以实现一个调度框架了,现在是,业务层在壳里(也就是我截图的QuartzDemo)能正常实现任务调度,但我分层,把业务层放到外部,也就是现在的Application类库,然后引用,没用。
@虔城墨客: 1.应该无需添加引用。 2. 看下输出log有什么信息(可能需修改config文件 log4net配置才会输出详细日志)
请问楼主解决了吗?请分享一下,谢谢