private static void purgeHiddenExclusiveDevices() { int disabledDevCount = DisabledDevices.Count; if (disabledDevCount > 0) { List <HidDevice> disabledDevList = new List <HidDevice>(); for (var devEnum = DisabledDevices.GetEnumerator(); devEnum.MoveNext();) //for (int i = 0, arlen = disabledDevCount; i < arlen; i++) { //HidDevice tempDev = DisabledDevices.ElementAt(i); HidDevice tempDev = devEnum.Current; if (tempDev != null) { if (tempDev.IsOpen && tempDev.IsConnected) { disabledDevList.Add(tempDev); } else if (tempDev.IsOpen) { if (!tempDev.IsConnected) { try { tempDev.CloseDevice(); } catch { } } if (DevicePaths.Contains(tempDev.DevicePath)) { DevicePaths.Remove(tempDev.DevicePath); } } } } DisabledDevices.Clear(); DisabledDevices.AddRange(disabledDevList); } }