定时器
更新时间: 2024-02-05 浏览次数: {{ hits }}

通过重写Timer的OnWork实现,固定每隔4个小时执行1次,且无法更改。代码请写到表单后端代码 默认类下面。

示例:

//定义一个定时器类(类名格式:自定义功能名 + _Timer),且继承H3.SmartForm.Timer类

public class MyTest_Timer: H3.SmartForm.Timer

{

    //构造方法,跟类名保持一致,里面不必书写代码,但是必须存在

    public MyTest_Timer() { }


    //重写定时器引擎执行的方法,必须存在,且方法名必须为OnWork

    protected override void OnWork(H3.IEngine engine)

    {

        //此方法每隔4小时调用一次

        Execute_1(engine);





        DateTime now = DateTime.Now;//获取当前时间

        DateTime sTime = DateTime.Parse(now.ToString("yyyy-MM-dd 10:00:00"));//获取今天的10点

        DateTime eTime = DateTime.Parse(now.ToString("yyyy-MM-dd 14:00:00"));//获取今天的14点

        if(sTime <= now && eTime >= now)//判断当前时间是否处于10点-14点间

        {

            //每天10点-14点间调用一次Execute_2方法(根据氚云定时器每隔4小时执行一次的规则,10点-14点间隔4小时,所以这个范围内必定会执行一次)

            Execute_2(engine);

        }

    }


    //此方法内书写你要定时执行的功能代码,非必须存在,只是为了封装,方法名自定义

    //调试本方法:在列表后端OnLoad方法中书写:new MyTest_Timer().Execute_1(this.Engine)

    public void Execute_1(H3.IEngine engine)

    {

        //此处无当前表单业务对象,所以不能使用this.Request.BizObject,请另行查询出需要的业务对象

        //此处无请求对象,所以请将this.Request.Engine替换为engine

        //此处无当前登录人,所以请将this.Request.UserContext.UserId替换为指定的人员id或系统默认用户Id(即:H3.Organization.User.SystemUserId)

    }


    //此方法内书写你要定时执行的功能代码,非必须存在,只是为了封装,方法名自定义

    //调试本方法:在列表后端OnLoad方法中书写:new MyTest_Timer().Execute_2(this.Engine)

    public void Execute_2(H3.IEngine engine)

    {

        //此处无当前表单业务对象,所以不能使用this.Request.BizObject,请另行查询出需要的业务对象

        //此处无请求对象,所以请将this.Request.Engine替换为engine

        //此处无当前登录人,所以请将this.Request.UserContext.UserId替换为指定的人员id或系统默认用户Id(即:H3.Organization.User.SystemUserId)

    }

}