This commit is contained in:
parallelbgls
2017-05-18 21:17:03 +08:00
parent e481b8e7b3
commit a4fac24003
2 changed files with 9 additions and 12 deletions

View File

@@ -670,7 +670,7 @@ namespace Modbus.Net
{ {
public bool Equals(IMachineProperty<TKey> x, IMachineProperty<TKey> y) public bool Equals(IMachineProperty<TKey> x, IMachineProperty<TKey> y)
{ {
return x.Id.Equals(y.Id) || x.ConnectionToken == y.ConnectionToken; return x.Id.Equals(y.Id);
} }
public int GetHashCode(IMachineProperty<TKey> obj) public int GetHashCode(IMachineProperty<TKey> obj)

View File

@@ -846,13 +846,10 @@ namespace Modbus.Net
/// <param name="machines">设备的列表</param> /// <param name="machines">设备的列表</param>
public void AddMachines<TUnitKey>(IEnumerable<BaseMachine<TMachineKey, TUnitKey>> machines) public void AddMachines<TUnitKey>(IEnumerable<BaseMachine<TMachineKey, TUnitKey>> machines)
where TUnitKey : IEquatable<TUnitKey> where TUnitKey : IEquatable<TUnitKey>
{
lock (_machines)
{ {
foreach (var machine in machines) foreach (var machine in machines)
AddMachine(machine); AddMachine(machine);
} }
}
/// <summary> /// <summary>
/// 通过Id获取设备 /// 通过Id获取设备
@@ -868,13 +865,13 @@ namespace Modbus.Net
TaskMachine<TMachineKey> machine; TaskMachine<TMachineKey> machine;
lock (_machines) lock (_machines)
{ {
machine = _machines.FirstOrDefault(p => p.Machine.Id.Equals(id)); machine = _machines.SingleOrDefault(p => p.Machine.Id.Equals(id));
} }
return machine as BaseMachine<TMachineKey, TUnitKey>; return machine?.Machine as BaseMachine<TMachineKey, TUnitKey>;
} }
catch (Exception e) catch (Exception e)
{ {
Log.Error(e, $"Device {id} return error"); Log.Error(e, $"Device {id} get error, maybe duplicated in taskmanager");
return null; return null;
} }
} }
@@ -893,13 +890,13 @@ namespace Modbus.Net
TaskMachine<TMachineKey> machine; TaskMachine<TMachineKey> machine;
lock (_machines) 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<TMachineKey, TUnitKey>; return machine?.Machine as BaseMachine<TMachineKey, TUnitKey>;
} }
catch (Exception e) catch (Exception e)
{ {
Log.Error(e, $"Device {connectionToken} return error"); Log.Error(e, $"Device {connectionToken} get error, maybe duplicated in taskmanager");
return null; return null;
} }
} }