ProfControl脚本编写代码时的一些建议和规范要求
18021520013
·
创建日期: 2022-05-23 12:54:48
·
2
1
0
65

ProfControl脚本编辑器采用 C# 语言编程,所有脚本项目均采用独立线程工作。使用本脚本编辑器时,请引入System;ProfControl.PublicAPI等命令空间(ProfControl.PublicAPI命名空间下开放出了调度系统的编程资源),如下:

using System;
using System.Threading;
using ProfControl.PublicAPI;

使用本脚本编辑器,必须在ProfControl命令空间内编写代码,如下:

using System;
using System.Threading;
using ProfControl.PublicAPI;

namespace ProfControl
{
...
}

脚本必须包含两个函数分别为Main函数及Kill函数;脚本运行的入口函数为Main函数,脚本结束退出的出口函数为Kill函数,如下:

using System;
using System.Threading;
using ProfControl.PublicAPI;

namespace ProfControl
{
    public class test2
    {
        public void Main()
        {
            //处理用户逻辑
        }

        public void Kill()
        {
            //处理退出脚本事务,如注销事件等
        }
    }
}

脚本一旦设置为自启动,当打开ProfControl调度系统的时候,脚本已经启动运行,大部分时候我们需要配合项目运行,且需要等待项目文件资源加载完成后才可进行一些资源获取、逻辑操作,所以在Main函数中增加一个特殊的代码段,用于在打开项目之前阻塞Main函数的后续工作。

using System;
using System.Threading;
using ProfControl.PublicAPI;

namespace ProfControl
{
    public class test2
    {      
        public void Main()
        {
             //通过死循环方式阻塞程序进一步执行,直到有项目被打开
             while(true)
             {
                 if(Tools.IsOpenedProject)
                     break;
                 Thread.Sleep(100);
             }
            //处理用户逻辑
        }

        public void Kill()
        {
            //处理退出脚本事务,如注销事件等
        }
    }
}

如果脚本需要在项目的运行周期内一直执行,则可以通过While(true){Thrad.Sleep(100);}的方式进行线程死循环,由于脚本项目运行于独立线程,所以这并不会造成什么问题,但是切记要在While循环中增加线程休眠,以让出CPU给其他应用运行。

using System;
using System.Threading;
using ProfControl.PublicAPI;

namespace ProfControl
{
    public class test2
    {       
        public void Main()
        {
             //通过死循环方式阻塞程序进一步执行,直到有项目被打开
             while(true)
             {
                 if(Tools.IsOpenedProject)
                     break;
                 Thread.Sleep(100);
             }

            //处理用户逻辑

            //通过死循环方式使脚本程序始终处于执行状态中,否则脚本程序仅执行一次即退出Main函数,随即正常结束本次功能执行
            while(true)
            {
                //用户代码
                Thread.Sleep(100);
            }
        }

        public void Kill()
        {
            //处理退出脚本事务,如注销事件等
        }
    }
}

由此可见,这也是创建新脚本项目时所自动生成的程序模板的由来,故而用户只需在此模板程序框架下进行功能需求开发即可。

特别提醒注意的是若脚本程序里用到了一些非托管资源,务必要在脚本结束运行时做好资源释放,即在kill函数内做好相应结束退出处理。