Bug Fix.
This commit is contained in:
@@ -670,7 +670,7 @@ namespace Modbus.Net
|
||||
{
|
||||
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)
|
||||
|
||||
@@ -846,13 +846,10 @@ namespace Modbus.Net
|
||||
/// <param name="machines">设备的列表</param>
|
||||
public void AddMachines<TUnitKey>(IEnumerable<BaseMachine<TMachineKey, TUnitKey>> machines)
|
||||
where TUnitKey : IEquatable<TUnitKey>
|
||||
{
|
||||
lock (_machines)
|
||||
{
|
||||
foreach (var machine in machines)
|
||||
AddMachine(machine);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通过Id获取设备
|
||||
@@ -868,13 +865,13 @@ namespace Modbus.Net
|
||||
TaskMachine<TMachineKey> 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<TMachineKey, TUnitKey>;
|
||||
return machine?.Machine as BaseMachine<TMachineKey, TUnitKey>;
|
||||
}
|
||||
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<TMachineKey> 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<TMachineKey, TUnitKey>;
|
||||
return machine?.Machine as BaseMachine<TMachineKey, TUnitKey>;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Log.Error(e, $"Device {connectionToken} return error");
|
||||
Log.Error(e, $"Device {connectionToken} get error, maybe duplicated in taskmanager");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user