From 5095205f190d8a09f6a2fe9cd6edfb555fea7569 Mon Sep 17 00:00:00 2001 From: luosheng Date: Wed, 22 Feb 2023 11:40:19 +0800 Subject: [PATCH] Add machine ID on Deal param --- .../Modbus.Net/Job/MachineJobScheduler.cs | 30 ++++++++++++++----- Samples/MachineJob/Worker.cs | 8 ++--- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/Modbus.Net/Modbus.Net/Job/MachineJobScheduler.cs b/Modbus.Net/Modbus.Net/Job/MachineJobScheduler.cs index 7881332..b5eb778 100644 --- a/Modbus.Net/Modbus.Net/Job/MachineJobScheduler.cs +++ b/Modbus.Net/Modbus.Net/Job/MachineJobScheduler.cs @@ -422,20 +422,34 @@ namespace Modbus.Net _parentJobKey = parentJobKey; } + /// /// 处理写返回 /// /// 任务ID,每个触发器唯一 - /// 成功回调方法 - /// 失败回调方法 + /// 成功回调方法,参数为设备ID + /// 失败回调方法,参数为设备ID /// /// - public async Task Deal(string queryId = null, Func onSuccess = null, Func onFailure = null) + public async Task Deal(string queryId = null, Func onSuccess = null, Func onFailure = null) + { + return await Deal(queryId, onSuccess, onFailure); + } + + /// + /// 处理写返回 + /// + /// 任务ID,每个触发器唯一 + /// 成功回调方法,参数为设备ID + /// 失败回调方法,参数为设备ID + /// + /// + public async Task Deal(string queryId = null, Func onSuccess = null, Func onFailure = null) where TMachineKey : IEquatable { if (queryId == null) return new MachineSetJobScheduler(_scheduler, _trigger, _parentJobKey); JobKey jobKey = JobKey.Create("Modbus.Net.DataQuery.Job." + queryId, "Modbus.Net.DataQuery.Group." + _trigger.Key.Name); - IJobDetail job = JobBuilder.Create() + IJobDetail job = JobBuilder.Create>() .WithIdentity(jobKey) .StoreDurably(true) .Build(); @@ -530,25 +544,27 @@ namespace Modbus.Net /// /// 处理写返回任务 /// - public class MachineDealDataJob : IJob + public class MachineDealDataJob : IJob where TMachineKey: IEquatable { /// public async Task Execute(IJobExecutionContext context) { + object machine; object success; object onSuccess; object onFailure; + context.JobDetail.JobDataMap.TryGetValue("Machine", out machine); context.JobDetail.JobDataMap.TryGetValue("Success", out success); context.JobDetail.JobDataMap.TryGetValue("OnSuccess", out onSuccess); context.JobDetail.JobDataMap.TryGetValue("OnFailure", out onFailure); bool? successValue = (bool?)success; if (successValue == true && onSuccess != null) { - await ((Func)onSuccess)(); + await ((Func)onSuccess)(((IMachineProperty)machine).GetMachineIdString()); } if (successValue == false && onFailure != null) { - await ((Func)onFailure)(); + await ((Func)onFailure)(((IMachineProperty)machine).GetMachineIdString()); } context.JobDetail.JobDataMap.Remove("Success"); diff --git a/Samples/MachineJob/Worker.cs b/Samples/MachineJob/Worker.cs index 85f528f..67d01a1 100644 --- a/Samples/MachineJob/Worker.cs +++ b/Samples/MachineJob/Worker.cs @@ -40,15 +40,15 @@ namespace MachineJob.Service await MachineJobSchedulerCreator.CancelJob("Trigger1"); } - public Task OnSuccess() + public Task OnSuccess(string machineId) { - Console.WriteLine("дɹ"); + Console.WriteLine("Machine {0} set success", machineId); return Task.CompletedTask; } - public Task OnFailure() + public Task OnFailure(string machineId) { - Console.WriteLine("дʧ"); + Console.WriteLine("Machine {0} set failure", machineId); return Task.CompletedTask; }