diff --git a/Modbus.Net/Modbus.Net/Controller/FifoController.cs b/Modbus.Net/Modbus.Net/Controller/FifoController.cs
index 3baf686..72efbb3 100644
--- a/Modbus.Net/Modbus.Net/Controller/FifoController.cs
+++ b/Modbus.Net/Modbus.Net/Controller/FifoController.cs
@@ -47,17 +47,17 @@ namespace Modbus.Net
///
protected override void SendingMessageControlInner()
{
- try
+ _taskCycleSema?.WaitOne();
+ while (!_taskCancel)
{
- _taskCycleSema?.WaitOne();
- while (!_taskCancel)
+ if (AcquireTime > 0)
{
- if (AcquireTime > 0)
- {
- Thread.Sleep(AcquireTime);
- }
- bool sendSuccess = false;
- lock (WaitingMessages)
+ Thread.Sleep(AcquireTime);
+ }
+ bool sendSuccess = false;
+ lock (WaitingMessages)
+ {
+ try
{
if (_currentSendingPos == null)
{
@@ -84,21 +84,23 @@ namespace Modbus.Net
}
}
}
- if (sendSuccess)
+ catch (ObjectDisposedException e)
{
- _taskCycleSema?.WaitOne();
+ logger.LogError(e, "Controller _currentSendingPos disposed");
+ _currentSendingPos = null;
+ sendSuccess = true;
+ }
+ catch (Exception e)
+ {
+ logger.LogError(e, "Controller throws exception");
+ _taskCancel = true;
}
}
+ if (sendSuccess)
+ {
+ _taskCycleSema?.WaitOne();
+ }
}
- catch (ObjectDisposedException)
- {
- //ignore
- }
- catch (Exception e)
- {
- logger.LogError(e, "Controller throws exception");
- }
-
}
///