当远程设备通过网络宣布自己时,我将其添加到列表中。我只想将之前未添加过的设备添加到列表中。
这些公告是通过异步套接字侦听器发出的,因此添加设备的代码可以在多个线程上运行。我不确定我做错了什么,但无论我尝试什么,最终都会出现重复。这是我目前拥有的......
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);
}
}
如果您的要求没有重复,您应该使用HashSet http://msdn.microsoft.com/en-us/library/bb359438.aspx.
哈希集.Add http://msdn.microsoft.com/en-us/library/bb353005.aspx将返回false当该项目已经存在时(如果这对您来说很重要)。
您可以使用 @pstrjds 链接到下面的构造函数(或here http://msdn.microsoft.com/en-us/library/bb359100%28v=vs.100%29.aspx) 来定义相等运算符,否则您需要在中实现相等方法RemoteDevice
(GetHashCode
& Equals
).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)