private static void commandResult(object sender, DoWorkEventArgs eventArgs) { int counter = 0; var serializer = new JavaScriptSerializer(); while (counter < 5) { var httpWebRequest = (HttpWebRequest)WebRequest.Create(Utility.ip + "/status/" + componentData.type.ToLower()); WebHeaderCollection myWebHeaderCollection = httpWebRequest.Headers; httpWebRequest.ContentType = "application/json"; myWebHeaderCollection.Add("Authorization:" + Utility.user.token); myWebHeaderCollection.Add(componentData.type.ToLower() + ":" + componentData.number); httpWebRequest.Method = "GET"; var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); var streamReader = new StreamReader(httpResponse.GetResponseStream()); var result = streamReader.ReadToEnd(); Dictionary <string, object> lr = serializer.Deserialize <dynamic>(result); if (((string)lr["position"] != Utility.components[Utility.componentIndex].position)) { Utility.components[Utility.componentIndex].position = (string)lr["position"]; Utility.components[Utility.componentIndex].state = (string)lr["state"]; break; } Thread.Sleep(6000); ++counter; if (bw.CancellationPending) { eventArgs.Cancel = true; break; } } if (counter >= 5) { Uri resourceUri = null; Application.Current.Dispatcher.Invoke((Action)(() => { if (componentData.type.ToLower() == "door") { resourceUri = new Uri("Images/garage_error.png", UriKind.Relative); ImageBrush brush = new ImageBrush(); StreamResourceInfo streamInfo = Application.GetResourceStream(resourceUri); BitmapFrame temp = BitmapFrame.Create(streamInfo.Stream); brush.ImageSource = temp; Utility.componentButtons[Utility.componentIndex].Background = brush; } else { resourceUri = new Uri("Images/light_error.png", UriKind.Relative); ImageBrush brush = new ImageBrush(); StreamResourceInfo streamInfo = Application.GetResourceStream(resourceUri); BitmapFrame temp = BitmapFrame.Create(streamInfo.Stream); brush.ImageSource = temp; Utility.componentButtons[Utility.componentIndex].Background = brush; } loadingBar.HidePanelCommand.Execute(null); loadingBar.refresh.IsEnabled = true; })); bw.RunWorkerCompleted -= complete; loadingBar.enableButtons(); } }