| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 | using Aitex.Core.RT.Fsm;using Aitex.Core.RT.Log;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace CyberX8_RT.Schedulers{    public class SchedulerPostMsg    {        private enum Step        {            PostMsg,            CheckMsg        }        #region 内部变量        private Step _step = Step.CheckMsg;        private DateTime _postMsgTime = DateTime.Now;        #endregion        /// <summary>        /// 构造函数        /// </summary>        /// <param name="entity"></param>        public SchedulerPostMsg()        {        }        /// <summary>        /// 重置        /// </summary>        public void Reset()        {            _step = Step.CheckMsg;            _postMsgTime = DateTime.Now;        }        /// <summary>        /// 发送方法        /// </summary>        /// <typeparam name="T"></typeparam>        /// <typeparam name="V"></typeparam>        /// <param name="entity"></param>        /// <param name="currentState"></param>        /// <param name="eEvent"></param>        /// <param name="moduleName"></param>        /// <param name="msg"></param>        /// <param name="confirmState"></param>        /// <param name="args"></param>        /// <returns></returns>        public bool PostMsg<T, V>(Entity entity,int currentState,eEvent eEvent, string moduleName, int msg, int confirmState, params object[] args)        {            if (_step == Step.PostMsg)            {                bool result =entity.CheckToPostMessage<T, V>(eEvent, moduleName, msg, args);                if (result)                {                    _postMsgTime = DateTime.Now;                    _step = Step.CheckMsg;                }            }            else            {                if (currentState == confirmState)                {                    return true;                }                else if (DateTime.Now.Subtract(_postMsgTime).TotalMilliseconds >= 1000)                {                    _step = Step.PostMsg;                }            }            return false;        }    }}
 |