From 89d26ba0c75121e3b3a229fd397460889edfa24a Mon Sep 17 00:00:00 2001 From: luosheng Date: Fri, 14 Jul 2023 09:46:21 +0800 Subject: [PATCH] Fix --- .../Modbus.Net/Controller/FifoController.cs | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/Modbus.Net/Modbus.Net/Controller/FifoController.cs b/Modbus.Net/Modbus.Net/Controller/FifoController.cs index 096b458..1c2317d 100644 --- a/Modbus.Net/Modbus.Net/Controller/FifoController.cs +++ b/Modbus.Net/Modbus.Net/Controller/FifoController.cs @@ -16,7 +16,7 @@ namespace Modbus.Net private bool _taskCancel = false; - private bool _activeSema = false; + private bool _activateSema = false; private int _waitingListMaxCount; @@ -39,17 +39,17 @@ namespace Modbus.Net : base(lengthCalc, checkRightFunc) { _waitingListMaxCount = int.Parse(waitingListMaxCount != null ? waitingListMaxCount.ToString() : null ?? ConfigurationReader.GetValueDirect("Controller", "WaitingListCount")); - _activeSema = activateSema; + _activateSema = activateSema; + if (_activateSema) + { + _taskCycleSema = new Semaphore(0, _waitingListMaxCount); + } AcquireTime = acquireTime; } /// protected override void SendingMessageControlInner() { - if (_activeSema) - { - _taskCycleSema = new Semaphore(0, _waitingListMaxCount); - } _taskCycleSema?.WaitOne(); while (!_taskCancel) { @@ -112,6 +112,10 @@ namespace Modbus.Net /// public override void SendStart() { + if (_taskCycleSema == null && _activateSema) + { + _taskCycleSema = new Semaphore(0, _waitingListMaxCount); + } _taskCancel = false; base.SendStart(); } @@ -146,6 +150,10 @@ namespace Modbus.Net { return false; } + if (_taskCancel) + { + return false; + } var success = base.AddMessageToList(def); if (success) {