private void SearchForDevices() { FindDevicesLoading = true; ThreadPool.QueueUserWorkItem(new WaitCallback((o) => { var baseUrl = "http://localhost:8479/"; var client = new RestClient(baseUrl); var request = new RestRequest("devices", Method.GET); var deviceItems = new List <TempServer.MTConnect.MTConnectConnection>(); var response = client.Execute(request); if (response != null && response.StatusCode == HttpStatusCode.OK) { var json = response.Content; if (!string.IsNullOrEmpty(json)) { var obj = Json.Convert.FromJson <List <TempServer.MTConnect.MTConnectConnection> >(json); if (obj != null) { deviceItems.AddRange(obj); } } firstFindDevices = false; } Dispatcher.BeginInvoke(new Action(() => { MTConnectDeviceItems.Clear(); foreach (var deviceItem in deviceItems) { if (!DeviceListItems.ToList().Exists(x => x.DeviceId == deviceItem.DeviceId)) { MTConnectDeviceItems.Add(deviceItem); } } FindDevicesLoading = false; })); })); }