コード例 #1
0
        public override void Execute(ref bool destroyAfterExecute)
        {
            int            outstadindChunkContexts;
            string         key;
            CriteriaSetObj workingCriteria = Global.criteriaSets[criteriaIndex];
            RawDataChunk   workingData     = Global.parsedRawData[dataIndex];
            PreAggSpecs    myPreSpecs      = workingCriteria.preAggObj;
            AggSpecs       myAggSpecs      = workingCriteria.aggSpecsObj;
            PostAggSpecs   myPostSpecs     = workingCriteria.postAggObj;
            uint           rawDataRowId;

            for (int i = 0; i < workingData.chunkDataParsed.Count; i++)
            {
                StockDataEntry currStockEntry = workingData.chunkDataParsed[i];
                if (DataEntryWithinFilter(myPreSpecs, currStockEntry))
                {
                    rawDataRowId = ((uint)dataIndex << 16) | ((uint)i);
                    key          = myAggSpecs.CreateAggKeyWithAggValues(currStockEntry);
                    workingCriteria.AddValueToDictionary(yesterdayData, key, currStockEntry.precentageSharesHeld, currStockEntry.sharesHeld, currStockEntry.value, rawDataRowId);
                }
            }

            outstadindChunkContexts = Interlocked.Decrement(ref chunkCount);
            if (outstadindChunkContexts == 0)
            {
                Global.mainThreadWait.Set();
            }
        }