Estoy agregando dispositivos remotos a una lista a medida que se anuncian en la red. Solo quiero agregar el dispositivo a la lista si no se ha agregado previamente.
Los anuncios llegan a través de un detector de socket asíncrono, por lo que el código para agregar un dispositivo se puede ejecutar en varios subprocesos. No estoy seguro de qué estoy haciendo mal, pero no importa lo que intente, termino con duplicaciones. Esto es lo que tengo actualmente ...
lock (_remoteDevicesLock)
{
RemoteDevice rDevice = (from d in _remoteDevices
where d.UUID.Trim().Equals(notifyMessage.UUID.Trim(), StringComparison.OrdinalIgnoreCase)
select d).FirstOrDefault();
if (rDevice != null)
{
//Update Device.....
}
else
{
//Create A New Remote Device
rDevice = new RemoteDevice(notifyMessage.UUID);
_remoteDevices.Add(rDevice);
}
}
RemoteDevice?