private void UpdateGUI(StatusClass _ErrorStatus) { List <string> tempIDs = new List <string>(); List <Order> tempData = new List <Order>(); bool fonlyOnce = true; while (!Manager.fStop) { if (Manager.Bridge.fFailedConection) { Manager.fStop = true; refcontrol.BeginInvoke((MethodInvoker) delegate() { ShowConnectionError(); }); } if (!Manager.Bridge.fConnected) { System.Threading.Thread.Sleep(500); continue; } if (fonlyOnce) { if (Manager.bkp.ordersToRestore()) { refcontrol.BeginInvoke((MethodInvoker) delegate() { AskForBackup(); }); } else { Manager.startTasks(); } fonlyOnce = false; } tempData = OrderList.Where(el => !(Manager.Bridge.OnHoldOrders.Exists(x => x.OrderUuid == el.ID) || Manager.Bridge.ActiveOrders.Exists(x => x.OrderUuid == el.ID))).ToList(); if (tempData.Any()) { foreach (Order it in tempData) { refcontrol.BeginInvoke((MethodInvoker) delegate() { OrderList.Remove(it); }); } } tempData = OrderList.Where(el => Manager.Bridge.OnHoldOrders.Exists(x => x.OrderUuid == el.ID) || Manager.Bridge.ActiveOrders.Exists(x => x.OrderUuid == el.ID)).ToList(); if (tempData.Any()) { foreach (Order it in tempData) { int index = OrderList.IndexOf(it); OrderList[index].STATUS = ErrorStatus.getStatusByOrder(it.ID); OrderList[index].TIMELEFT = (DateTime.UtcNow - it.CREATED).ToString(@"dd\.hh\:mm\:ss"); } } foreach (Order it in OrderList) { tempIDs.Add(it.ID); } foreach (BittrexSharp.Domain.OpenOrder it in Manager.Bridge.OnHoldOrders) { if (tempIDs.Contains(it.OrderUuid)) { continue; } refcontrol.BeginInvoke((MethodInvoker) delegate() { OrderList.Add(new Order(it.OrderUuid, it.Exchange, it.QuantityRemaining, it.OrderType, ErrorStatus.getStatusByOrder(it.OrderUuid), it.Opened, (DateTime.UtcNow - it.Opened).ToString(@"dd\.hh\:mm\:ss"))); }); } foreach (BittrexSharp.Domain.OpenOrder it in Manager.Bridge.ActiveOrders) { if (tempIDs.Contains(it.OrderUuid)) { continue; } refcontrol.BeginInvoke((MethodInvoker) delegate() { if (!Manager.Bridge.OnHoldOrders.Exists(x => x.OrderUuid == it.OrderUuid)) { OrderList.Add(new Order(it.OrderUuid, it.Exchange, it.QuantityRemaining, it.OrderType, ErrorStatus.getStatusByOrder(it.OrderUuid), it.Opened, (DateTime.UtcNow - it.Opened).ToString(@"dd\.hh\:mm\:ss"))); } }); } tempIDs.Clear(); System.Threading.Thread.Sleep(Constants.second); } refcontrol.BeginInvoke((MethodInvoker) delegate() { OrderList.Clear(); }); }