Bug Fix.
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user