From d076d640f0cd4230abc6bec2d5addea7fa428ba9 Mon Sep 17 00:00:00 2001 From: luosheng Date: Mon, 13 Feb 2023 13:18:58 +0800 Subject: [PATCH] Some Fix --- .../Modbus.Net/Job/MachineJobScheduler.cs | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/Modbus.Net/Modbus.Net/Job/MachineJobScheduler.cs b/Modbus.Net/Modbus.Net/Job/MachineJobScheduler.cs index 3bff233..c117d69 100644 --- a/Modbus.Net/Modbus.Net/Job/MachineJobScheduler.cs +++ b/Modbus.Net/Modbus.Net/Job/MachineJobScheduler.cs @@ -59,24 +59,21 @@ namespace Modbus.Net return new MachineQueryJobScheduler(_scheduler, _trigger, jobKey); } - public async Task To(string queryId, Dictionary values, IMachineMethodData machine, MachineDataType machineDataType) + public async Task Apply(string queryId, Dictionary values, MachineDataType machineDataType) { JobKey jobKey = JobKey.Create("Modbus.Net.DataQuery.Job." + queryId, "Modbus.Net.DataQuery.Group"); - IJobDetail job = JobBuilder.Create() + IJobDetail job = JobBuilder.Create() .WithIdentity(jobKey) .Build(); job.JobDataMap.Put("DataType", machineDataType); - job.JobDataMap.Put("Machine", machine); job.JobDataMap.Put("Value", values); + job.JobDataMap.Put("QueryMethod", null); await _scheduler.ScheduleJob(job, _trigger); - JobChainingJobListenerWithDataMap listener = new JobChainingJobListenerWithDataMap("Modbus.Net.DataQuery.Chain", false); - _scheduler.ListenerManager.AddJobListener(listener, GroupMatcher.GroupEquals("Modbus.Net.DataQuery.Group")); - - return new MachineSetJobScheduler(_scheduler, _trigger, listener, jobKey); + return new MachineQueryJobScheduler(_scheduler, _trigger, jobKey); } } @@ -97,8 +94,12 @@ namespace Modbus.Net public async Task Query(string queryId = null, Func, Dictionary> QueryDataFunc = null) { - JobChainingJobListenerWithDataMap listener = new JobChainingJobListenerWithDataMap("Modbus.Net.DataQuery.Chain", false); - _scheduler.ListenerManager.AddJobListener(listener, GroupMatcher.GroupEquals("Modbus.Net.DataQuery.Group")); + JobChainingJobListenerWithDataMap listener = _scheduler.ListenerManager.GetJobListener("Modbus.Net.DataQuery.Chain") as JobChainingJobListenerWithDataMap; + if (listener == null) + { + listener = new JobChainingJobListenerWithDataMap("Modbus.Net.DataQuery.Chain", false); + _scheduler.ListenerManager.AddJobListener(listener, GroupMatcher.GroupEquals("Modbus.Net.DataQuery.Group")); + } if (queryId == null) return new MachineSetJobScheduler(_scheduler, _trigger, listener, _parentJobKey);