Пример #1
0
        /// <summary>process "timer" event</summary>
        /// <param name = "mgTimer">object of 'MgTimer' class</param>
        internal void ProcessTimer(MgTimer mgTimer)
        {
            MGData mgd  = ((RCTimer)mgTimer).GetMgdata();
            var    task = mgd.getFirstTask();

            // MgTimer/RCTimer uses interval in milliseconds but RuntimeEvent uses interval in seconds
            // so convert it to seconds.
            int  seconds = (((RCTimer)mgTimer).TimerIntervalMiliSeconds) / 1000;
            bool isIdle  = ((RCTimer)mgTimer).IsIdleTimer;

            if (mgd.IsAborting)
            {
                return;
            }

            var rtEvt = new RunTimeEvent(task, true);

            rtEvt.setTimer(seconds, mgd.GetId(), isIdle);
            rtEvt.setMainPrgCreator(rtEvt.getTask());
            if (!isIdle)
            {
                rtEvt.setCtrl((MgControl)task.getLastParkedCtrl());
            }
            rtEvt.setInternal(InternalInterface.MG_ACT_TIMER);
            ClientManager.Instance.EventsManager.addToTail(rtEvt);
        }