Exemplo n.º 1
0
        public override bool TransactionProcessing()
        {
            bool ret = false;

            if (mSymbols != null)
            {
                List <Thread> SubTask = new List <Thread>();

                int Index = 0;
                while (Index < mSymbols.Count)
                {
                    List <int> SubSymbols = mSymbols.GetRange(Index, Math.Min(mPerThreadCount, mSymbols.Count - Index));
                    Index += mPerThreadCount;

                    Thread NewThread = new Thread(o =>
                    {
                        DataCapture.SinaStockHistoryCapture Capture = DataCapture.StockCaptureManager.Instance().CreateSinaStockHistoryCapture(SubSymbols);
                        Capture.GetTodayHistoryTransactionData();
                    });
                    NewThread.Start();

                    SubTask.Add(NewThread);
                }

                ret = true;

                while (true)
                {
                    bool AllCompleted = true;

                    foreach (var ele in SubTask)
                    {
                        AllCompleted &= (ele.ThreadState == ThreadState.Stopped);

                        ret &= (ele.ThreadState != ThreadState.Aborted);
                    }

                    if (AllCompleted)
                    {
                        break;
                    }

                    Thread.Sleep(100);
                }
            }

            return(ret);
        }
Exemplo n.º 2
0
        public override bool TransactionProcessing()
        {
            bool ret = false;

            if (mSymbols != null)
            {
                List <Thread> SubTask = new List <Thread>();

                AtomLock Lock  = new AtomLock();
                int      Index = 0;
                for (int i = 0; i < mMaxThreadCount; ++i)
                {
                    Thread NewThread = new Thread(o =>
                    {
                        bool Running = true;
                        while (Running)
                        {
                            String Symbol = String.Empty;
                            Lock.Lock();
                            {
                                if (Index < mSymbols.Count)
                                {
                                    Symbol = mSymbols[Index++];
                                }
                                else
                                {
                                    Running = false;
                                }
                                Lock.Unlock();
                            }
                            if (Symbol != String.Empty)
                            {
                                DataCapture.SinaStockHistoryCapture Capture = DataCapture.StockQuotesManager.Instance().CreateSinaStockHistoryCapture();
                                Capture.GetTodayHistoryTransactionData(Symbol);
                            }
                        }
                    });
                    NewThread.Start();

                    SubTask.Add(NewThread);
                }

                ret = true;

                while (true)
                {
                    bool AllCompleted = true;

                    foreach (var ele in SubTask)
                    {
                        AllCompleted &= (ele.ThreadState == ThreadState.Stopped);

                        ret &= (ele.ThreadState != ThreadState.Aborted);
                    }

                    if (AllCompleted)
                    {
                        break;
                    }

                    Thread.Sleep(30000);
                }
            }

            return(ret);
        }