/// <summary>
        /// 执行准确的函数
        /// </summary>
        /// <param name="box"></param>
        protected void Dofunction(ItemBox box, WriteStreamCallBack wrs, IScriptLayout ml)
        {
            if (isStop)
            {
                throw new Exception("主动停止了脚本!");
            }
            ml.SetFunctionBoxRun(box);
            ScriptInput si = new ScriptInput();

            foreach (var item in box.InputDatas)
            {
                if (item.PIEnum != ParaItemEnum.INPUT)
                {
                    si.SetValue(item.Name, GetValue(item as ParatItem));
                }
            }

            ScriptOutput so = RunScript(box, si);

            //ScriptOutput so = null;             ////////////////////////////////////待修改
            if (so != null)
            {
                if (so.LogMessage != null && so.LogMessage.Equals("") == false)
                {
                    wrs?.Invoke(so.LogMessage);
                }
                foreach (var item in box.OutDatas)
                {
                    if (item.PIEnum != ParaItemEnum.OUTPUT)
                    {
                        item.Value = so.GetValue(item.Name);
                        SetValue(item as ParatItem);
                    }
                }
            }
            //检测是否需要断点停止
            checkScriptRunForStopPoint(box, si, null);
            if (so != null)
            {
                so.Dispose();
                so = null;
            }
            si.Dispose();
            si = null;
            ml.SetFunctionBoxStop(box);
        }
 /// <summary>
 /// 选中执行的函数
 /// </summary>
 /// <param name="box"></param>
 /// <param name="wrs"></param>
 /// <param name="ml"></param>
 protected void RunningFunction(IItemBox box, WriteStreamCallBack wrs, IScriptLayout ml)
 {
     foreach (var currentbox in (box as ItemBox).Children)
     {
         ml.SetFunctionBoxRun(currentbox);
         if (currentbox.BoxType == ItemBoxEnum.FUNCTION)
         {
             Dofunction(currentbox, wrs, ml);
         }
         else if (currentbox.BoxType == ItemBoxEnum.IF)
         {
             DoIfFunction(currentbox, wrs, ml);
         }
         else if (currentbox.BoxType == ItemBoxEnum.WHILE)
         {
             DoWhileFunction(currentbox, wrs, ml);
         }
         ml.SetFunctionBoxStop(currentbox);
     }
 }