/// <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); }