public async Task Close() { try { var task = StopPumps(); var cancellationToken = new CancellationTokenSource(5 * 1000).Token; var cancellationCompletionSource = new TaskCompletionSource <bool>(); using (cancellationToken.Register(() => cancellationCompletionSource.TrySetResult(true))) { if (task != await Task.WhenAny(task, cancellationCompletionSource.Task)) { Debug.WriteLine("close timeout"); } } } catch (Exception) { // } finally { Dispose(); pump1 = new PumpDevice(1); pump2 = new PumpDevice(2); pump3 = new PumpDevice(3); AttactchEventHanlder(pump1); AttactchEventHanlder(pump2); AttactchEventHanlder(pump3); } }
public void AttactchEventHanlder(PumpDevice device) { DetactchEventHanlder(device); device.CommunicationEvent += Communication; device.PreCommunicationEvent += PreCommunicationStatusChange; device.CommunicationChangeEvent += CommunicationChange; device.CaptureCustomExceptionEvent += CaptureCustomExceptionEvent; }
public PumpController(ControlCenter center, PumpDevice device, Pump pump) : base(center, device) { if (pump == null) { //CustomErrorEvent(new CustomException($"pump{PumpCultivation.PumpId} 的时间表排期为空", this.GetType().FullName, ExceptionPriority.Unrecoverable)); return; } PumpCultivation = CultivationFactory.GetCultivation(pump); PumpCultivation.CalcSchedules(); LogFactory.Create().Info($"pump{PumpCultivation.Device.DeviceId} {PumpCultivation.Device.ProcessMode} startTime is {PumpCultivation.Device.StartTime:yyyy-MM-dd HH:mm:ss}"); }
public void DetactchEventHanlder(PumpDevice device) { try { device.CommunicationEvent -= Communication; device.PreCommunicationEvent -= PreCommunicationStatusChange; device.CommunicationChangeEvent -= CommunicationChange; device.CaptureCustomExceptionEvent -= CaptureCustomExceptionEvent; } catch (Exception) { // } }