diff --git a/Modbus.Net/Modbus.Net/FifoController.cs b/Modbus.Net/Modbus.Net/FifoController.cs
index efc8ac7..6535461 100644
--- a/Modbus.Net/Modbus.Net/FifoController.cs
+++ b/Modbus.Net/Modbus.Net/FifoController.cs
@@ -27,9 +27,13 @@ namespace Modbus.Net
/// 构造器
///
/// 间隔时间
- public FifoController(int acquireTime)
+ /// 是否开启信号量
+ public FifoController(int acquireTime, bool activateSema = true)
{
- _taskCycleSema = new Semaphore(0, _waitingListMaxCount);
+ if (activateSema)
+ {
+ _taskCycleSema = new Semaphore(0, _waitingListMaxCount);
+ }
AcquireTime = acquireTime;
}
@@ -38,7 +42,7 @@ namespace Modbus.Net
{
try
{
- _taskCycleSema.WaitOne();
+ _taskCycleSema?.WaitOne();
while (!_taskCancel)
{
if (AcquireTime > 0)
@@ -62,7 +66,7 @@ namespace Modbus.Net
if (WaitingMessages.Count <= 0)
{
_currentSendingPos = null;
- _taskCycleSema.Close();
+ _taskCycleSema?.Close();
sendSuccess = true;
}
else if (WaitingMessages.Count > WaitingMessages.IndexOf(_currentSendingPos) + 1)
@@ -75,7 +79,7 @@ namespace Modbus.Net
}
if (sendSuccess)
{
- _taskCycleSema.WaitOne();
+ _taskCycleSema?.WaitOne();
}
}
}
@@ -125,7 +129,7 @@ namespace Modbus.Net
var success = base.AddMessageToList(def);
if (success)
{
- _taskCycleSema.Release();
+ _taskCycleSema?.Release();
}
return success;
}
diff --git a/Modbus.Net/Modbus.Net/MatchController.cs b/Modbus.Net/Modbus.Net/MatchController.cs
index 8717c30..1ddc60c 100644
--- a/Modbus.Net/Modbus.Net/MatchController.cs
+++ b/Modbus.Net/Modbus.Net/MatchController.cs
@@ -18,7 +18,8 @@ namespace Modbus.Net
///
/// 匹配字典,每个Collection代表一个匹配集合,每一个匹配集合中的数字代表需要匹配的位置,最后计算出来的数字是所有位置数字按照集合排序后叠放在一起
/// 获取间隔
- public MatchController(ICollection<(int,int)>[] keyMatches, int acquireTime) : base(acquireTime)
+ /// 是否开启信号量
+ public MatchController(ICollection<(int,int)>[] keyMatches, int acquireTime, bool activateSema = true) : base(acquireTime, activateSema)
{
KeyMatches = keyMatches;
}
diff --git a/Modbus.Net/Modbus.Net/MatchDirectlySendController.cs b/Modbus.Net/Modbus.Net/MatchDirectlySendController.cs
index 9f086e7..d27f39c 100644
--- a/Modbus.Net/Modbus.Net/MatchDirectlySendController.cs
+++ b/Modbus.Net/Modbus.Net/MatchDirectlySendController.cs
@@ -13,7 +13,7 @@ namespace Modbus.Net
{
///
public MatchDirectlySendController(ICollection<(int, int)>[] keyMatches) : base(keyMatches,
- 0)
+ 0, false)
{
}