コード例 #1
0
        /// <summary>
        /// 运行脚本
        /// </summary>
        /// <param name="ml"></param>
        public static void RunScript(MainLayout ml, WriteStreamCallBack wrs, IList <IPropertyIt> propertys, WriteStreamCallBack runover = null)
        {
            ScriptObjectManager sm = new ScriptObjectManager();

            if (propertys.Count > 0)
            {
                foreach (var item in propertys)
                {
                    ScriptOutput so = new ScriptOutput();
                    so.SetValue(item.Name, item.Value);
                    sm.SetValue(item.Id, so);
                }
            }
            try
            {
                IItemBox currentib = (ml.MainIb as LineItemBox).Next(0);
                IItemBox next      = null;
                while (currentib != null)
                {
                    ml.SetFunctionBoxRun(System.Windows.Media.Colors.Red, currentib);
                    next = DoFunction(currentib as ItemBox, sm, wrs);
                    ml.SetFunctionBoxStop(System.Windows.Media.Colors.White, currentib);
                    currentib = next;
                }
            }
            catch (Exception ex)
            {
                wrs?.Invoke("脚本运行失败");
                Log.Write(new LogMessage("脚本运行失败", ex));
            }
            finally
            {
                sm.Dispose();
                sm = null;
                runover?.Invoke("程序运行结束");
            }
        }