private void executeDataUpdate() { while (!AllStop) { lock (lock_select) if (selectedName != "" && selected) { string name = selectedName; bool[] isNeedUpdate = { false, false, false, false }; double[] tempTickerData = null; JArray tempTHData = null; List <double>[] tempOBData = null; double tempTHMax = double.MinValue; double[] tempBalacneData = null; if (selected) { tempTickerData = react.getTickerData(name); if (tempTickerData != null) { isNeedUpdate[0] = true; } else { selected = false; } } if (selected) { tempTHData = react.getTransactionData(name); if (tempTHData != null) { isNeedUpdate[1] = true; } else { selected = false; } } if (selected) { tempOBData = react.getOrderBookData(name); if (tempOBData != null) { for (int i = 0; i < 15; i++) { tempTHMax = Math.Max(tempTHMax, tempOBData[2][i]); tempTHMax = Math.Max(tempTHMax, tempOBData[3][i]); } isNeedUpdate[2] = true; } else { selected = false; } } if (needTradeInit) { tempBalacneData = react.getBalanceData(name); if (tempBalacneData != null) { isNeedUpdate[3] = true; needTradeInit = false; } } if (selected) { lock (lock_updater) { if (isNeedUpdate[0]) { for (int i = 0; i < 11; i++) { tickerData[i] = tempTickerData[i]; } } if (isNeedUpdate[1]) { transactionData = tempTHData; } if (isNeedUpdate[2]) { ob = tempOBData; THMax = tempTHMax; } if (isNeedUpdate[3]) { for (int i = 0; i < 7; i++) { vbalanceData[i] = tempBalacneData[i]; } vbalanceData[6] = tickerData[1]; needTradeUpdate = true; } } } } for (int i = 0; i < 10; i++) { if (AllStop || needTradeInit) { break; } Thread.Sleep(100); } } }