示例#1
0
文件: Menu.cs 项目: NunoJDCM/TDIN
        private void update_timers()
        {
            long current_time = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;

            /* Add inactive orders to the timer dictionary */
            foreach (dynamic buy_order in Client.buy_orders)
            {
                int id = Convert.ToInt32(buy_order.id);
                if (buy_order.active == 0 && !Client.b_activateTimers.ContainsKey(id))
                {
                    Client.b_activateTimers.Add(id, current_time);
                }
            }
            foreach (dynamic sell_order in Client.sell_orders)
            {
                int id = Convert.ToInt32(sell_order.id);
                if (sell_order.active == 0 && !Client.s_activateTimers.ContainsKey(id))
                {
                    Client.b_activateTimers.Add(id, current_time);
                }
            }
            /* When 60 seconds have passed, re-activate order */

            /* orders to remove, since they cant be removed while enumerating */
            List <int> buytoremove  = new List <int>();
            List <int> selltoremove = new List <int>();

            foreach (KeyValuePair <int, long> timer in Client.b_activateTimers)
            {
                dynamic order = Client.BuyOrderById(timer.Key);
                if (order == null)
                {
                    buytoremove.Add(timer.Key);
                    continue;
                }
                int id     = Convert.ToInt32(order.id);
                int amount = Convert.ToInt32(order.amount);
                if (current_time - timer.Value > Client.DIFFERENCE && order.active == 0)
                {
                    try
                    {
                        buytoremove.Add(timer.Key);
                        Client.services.ActivateBuyOrder(Client.token, id, amount);
                    }
                    catch (Exception ex)
                    {
                        selltoremove.Add(timer.Key);
                        Client.services.ActivateSellOrder(Client.token, id, amount);
                    }
                }
            }
            foreach (KeyValuePair <int, long> timer in Client.s_activateTimers)
            {
                dynamic order = Client.SellOrderById(timer.Key);
                if (order == null)
                {
                    selltoremove.Add(timer.Key);
                    continue;
                }
                int id     = Convert.ToInt32(order.id);
                int amount = Convert.ToInt32(order.amount);
                if (current_time - timer.Value > Client.DIFFERENCE && order.active == 0)
                {
                    try
                    {
                        selltoremove.Add(timer.Key);
                        Client.services.ActivateSellOrder(Client.token, id, amount);
                    }
                    catch (Exception ex)
                    {
                    }
                }
            }
            foreach (int elem in buytoremove)
            {
                Client.b_activateTimers.Remove(elem);
            }
            foreach (int elem in selltoremove)
            {
                Client.s_activateTimers.Remove(elem);
            }
        }