コード例 #1
0
        private void HandleSecondPool()
        {
            Row Data;

            if (FirstPoolDone())
            {
                Debug.WriteLine("First Queue is [DONE] going to second queue");
            }
            while (!SecondPoolDone())
            {
                while (_storageStatusQueue.TryDequeue(out Data))
                {
                    int id = Convert.ToInt32(Data.Values[0]);
                    if (ProductDictionary.ContainsKey(id))
                    {
                        ProductDictionary[id].StorageWithAmount.TryAdd(Convert.ToInt32(Data.Values[1]), Convert.ToInt32(Data.Values[2]));
                    }
                    else
                    {
                        DisabledProducts[id].StorageWithAmount.TryAdd(Convert.ToInt32(Data.Values[1]), Convert.ToInt32(Data.Values[2]));
                    }
                    Interlocked.Increment(ref _doneStorageStatusCount);
                }
                while (_storageTransactionsQueue.TryDequeue(out Data))
                {
                    int ProductID     = Convert.ToInt32(Data.Values[1]);
                    int SourceID      = Convert.ToInt32(Data.Values[4]);
                    int DestinationID = Convert.ToInt32(Data.Values[5]);
                    if (StorageRoomDictionary.ContainsKey(SourceID) && StorageRoomDictionary.ContainsKey(DestinationID))
                    {
                        StorageTransaction StorageTrans = new StorageTransaction(Data, true);
                        StorageRoom        Source       = StorageRoomDictionary[SourceID];
                        StorageRoom        Destination  = StorageRoomDictionary[DestinationID];
                        BaseProduct        prod;
                        if (ProductDictionary.ContainsKey(ProductID))
                        {
                            prod = ProductDictionary[ProductID];
                        }
                        else
                        {
                            prod = DisabledProducts[ProductID];
                        }
                        StorageTrans.SetInformation(Source, Destination, prod);
                        StorageTransactionDictionary.TryAdd(StorageTrans.ID, StorageTrans);
                    }
                    Interlocked.Increment(ref _doneStorageTransactionCount);
                }
                while (_orderTransactionsQueue.TryDequeue(out Data))
                {
                    OrderTransaction OrderTrans = new OrderTransaction(Data, true);
                    int ProductID = Convert.ToInt32(Data.Values[1]);
                    if (ProductDictionary.ContainsKey(ProductID))
                    {
                        OrderTrans.SetInformation(ProductDictionary[ProductID]);
                    }
                    else
                    {
                        OrderTrans.SetInformation(DisabledProducts[ProductID]);
                    }
                    OrderTransactionDictionary.TryAdd(OrderTrans.ID, OrderTrans);
                    Interlocked.Increment(ref _doneOrderTransactionCount);
                }
            }
        }