我有一个 Windows 服务,它(至少曾经)从 xml 配置文件创建作业。但是我无法让它工作。
这是我的 xml (jobs.config)
<?xml version="1.0" encoding="UTF-8"?>
<job-scheduling-data
xmlns="http://quartznet.sourceforge.net/JobSchedulingData"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0">
<schedule>
<job>
<name>FirstJob</name>
<group>DummyGroup</group>
<description>This is FirstJob</description>
<job-type>Test.TestJob, Test</job-type>
</job>
<trigger>
<simple>
<name>nativeJobExampleSimpleTrigger</name>
<group>nativeJobExampleSimpleTriggerGroup</group>
<description>Simple trigger to simply fire sample job</description>
<job-name>FirstJob</job-name>
<job-group>DummyGroup</job-group>
<misfire-instruction>SmartPolicy</misfire-instruction>
<repeat-count>5</repeat-count>
<repeat-interval>5000</repeat-interval>
</simple>
</trigger>
</schedule>
这是创建我的工作的代码。
var jobs = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "jobs.config");
var properties = new NameValueCollection
{
["quartz.scheduler.instanceName"] = "XmlConfiguredInstance",
["quartz.threadPool.threadCount"] = "5",
["quartz.threadPool.threadPriority"] = "Normal",
["quartz.plugin.xml.type"] = "Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz",
["quartz.plugin.xml.fileNames"] = jobs
};
var sf = new StdSchedulerFactory(properties);
sched = sf.GetScheduler();
sched.Start();
var jgn = sched.GetJobGroupNames();
var count = jgn.Count;
无论我尝试什么,价值count
总是为零,我的工作没有开始。配置文件的路径是正确的(我尝试将文件重命名为 1jobs.config 并得到“找不到文件异常”。
我从文档中尝试了几个配置和代码示例,结果是一样的。将属性移动到 myservice.exe.config 也不会改变任何内容。Jobs.config 对每个人都有读取权限。
但是,如果我在 WinForms 应用程序中尝试相同的代码和相同的配置,它会像预期的那样工作。