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;
}