/// <summary>
        ///  执行具体消息处理委托
        /// </summary>
        /// <returns></returns>
        private async Task <WechatChatContext> ExecuteProcessor(string appId, string recMsgXml, IDictionary <string, string> recMsgDirs, InternalBaseProcessor processor)
        {
            var recMsg = processor.CreateRecMsg();

            recMsg.LoadMsgDirs(recMsgDirs);

            recMsg.RecMsgXml = recMsgXml;
            recMsg.AppId     = appId;

            var msgContext = new WechatChatContext {
                RecMsg = recMsg
            };
            var pTask = processor.InternalExecute(recMsg);

            if (pTask != null)
            {
                msgContext.ReplyMsg = await pTask;
            }

            if (msgContext.ReplyMsg == null)
            {
                msgContext.ReplyMsg = (await ProcessUnknowMsg(recMsg)) ?? WechatNoneReplyMsg.None;
            }

            msgContext.ReplyMsg.ToUserName   = recMsg.FromUserName;
            msgContext.ReplyMsg.FromUserName = recMsg.ToUserName;
            msgContext.ReplyMsg.CreateTime   = DateTime.Now.ToUtcSeconds();

            return(msgContext);
        }
 /// <summary>
 ///  执行结束方法
 /// </summary>
 /// <param name="msgContext"></param>
 protected virtual Task ProcessEnd(WechatChatContext msgContext)
 {
     return(Task.CompletedTask);
 }