From 9305cade9e27d17794de5a1b448c89e026833d83 Mon Sep 17 00:00:00 2001 From: parallelbgls Date: Thu, 18 May 2017 21:17:03 +0800 Subject: [PATCH] Bug Fix. --- Modbus.Net/src/Base.Common/BaseMachine.cs | 2 +- Modbus.Net/src/Base.Common/TaskManager.cs | 19 ++++++++----------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/Modbus.Net/src/Base.Common/BaseMachine.cs b/Modbus.Net/src/Base.Common/BaseMachine.cs index f9de1f3..ee97b51 100644 --- a/Modbus.Net/src/Base.Common/BaseMachine.cs +++ b/Modbus.Net/src/Base.Common/BaseMachine.cs @@ -670,7 +670,7 @@ namespace Modbus.Net { public bool Equals(IMachineProperty x, IMachineProperty y) { - return x.Id.Equals(y.Id) || x.ConnectionToken == y.ConnectionToken; + return x.Id.Equals(y.Id); } public int GetHashCode(IMachineProperty obj) diff --git a/Modbus.Net/src/Base.Common/TaskManager.cs b/Modbus.Net/src/Base.Common/TaskManager.cs index a36638c..dd3bf71 100644 --- a/Modbus.Net/src/Base.Common/TaskManager.cs +++ b/Modbus.Net/src/Base.Common/TaskManager.cs @@ -847,11 +847,8 @@ namespace Modbus.Net public void AddMachines(IEnumerable> machines) where TUnitKey : IEquatable { - lock (_machines) - { - foreach (var machine in machines) - AddMachine(machine); - } + foreach (var machine in machines) + AddMachine(machine); } /// @@ -868,13 +865,13 @@ namespace Modbus.Net TaskMachine machine; lock (_machines) { - machine = _machines.FirstOrDefault(p => p.Machine.Id.Equals(id)); + machine = _machines.SingleOrDefault(p => p.Machine.Id.Equals(id)); } - return machine as BaseMachine; + return machine?.Machine as BaseMachine; } catch (Exception e) { - Log.Error(e, $"Device {id} return error"); + Log.Error(e, $"Device {id} get error, maybe duplicated in taskmanager"); return null; } } @@ -893,13 +890,13 @@ namespace Modbus.Net TaskMachine machine; lock (_machines) { - machine = _machines.FirstOrDefault(p => p.Machine.ConnectionToken == connectionToken); + machine = _machines.SingleOrDefault(p => p.Machine.ConnectionToken == connectionToken && p.Machine.IsConnected); } - return machine as BaseMachine; + return machine?.Machine as BaseMachine; } catch (Exception e) { - Log.Error(e, $"Device {connectionToken} return error"); + Log.Error(e, $"Device {connectionToken} get error, maybe duplicated in taskmanager"); return null; } }