Example #1
0
        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);
                }
            }
        }