using Quartz; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using IStation.Model; namespace IStation.DataDockingSocket { /// /// 发送指令任务 /// [DisallowConcurrentExecution]//此特性标识 必须等待这次任务执行完成后,才能执行下次任务 public class SendInstructionJob : IJob { internal const string Session = "Session";//会话字符 internal const string Instruction = "Instruction";//指令字符 public async Task Execute(IJobExecutionContext context) { try { await Task.Run(() => { var dataMap = context.MergedJobDataMap; var bytes = (byte[])dataMap[Instruction]; if (bytes == null) return; var session = (Model.IMonitorDataDockingSession)dataMap[Session]; if (session == null) return; if (session.IsConnected) { SessionHelper.Cache.Send(bytes, 0, bytes.Length); LogCustomHelper.Info(session.SessionName + ":" + BitConverter.ToString(bytes) + ", 发送一条请求数据指令"); } }); } catch (Exception ex) { var e = new JobExecutionException(ex); throw e; } } } }