博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
05帧定时任务
阅读量:6674 次
发布时间:2019-06-25

本文共 4237 字,大约阅读时间需要 14 分钟。

/// /// 帧定时任务/// public class FrameTask{    public int taskID;//任务id    public int count;//循环次数    public int frameTime;//目标时间    public int delayTime;//延迟时间    public Action callBack; //执行的方法    public FrameTask(int taskID, int count,int frameTime, int  delayTime, Action callBack)    {        this.taskID = taskID;        this.count = count;        this.frameTime = frameTime;        this.delayTime = delayTime;        this.callBack = callBack;    }
#region 帧任务    private int frame = 0;    //执行帧任务    private void ExecuteFrameTask()    {        //从缓存里里面取出来        if (cacheFrameTasks.Count > 0)        {            foreach (FrameTask task in cacheFrameTasks)            {                frameTasks.Add(task);            }        }        cacheFrameTasks.Clear();        frame += 1;                for (int i = 0; i < frameTasks.Count; i++)        {            FrameTask frameTask = frameTasks[i];            if (frame < frameTask.frameTime)            {                continue;            }            else            {                if (frameTask.callBack != null)                {                    frameTask.callBack.Invoke();                }                //到达时间了                //判断任务执行的次数                if (frameTask.count == 1)                {                    //移除任务                    frameTasks.RemoveAt(i);                    i--;                    cacheIdList.Add(frameTask.taskID);                    break;                }                else                {                    if (frameTask.count != 0)                    {                        frameTask.count -= 1;                    }                    //时间加                     frameTask.frameTime += frameTask.delayTime;                }            }        }          }    //添加任务 默认是毫秒 返回添加任务的id    public int AddFrameTask(int frameTime, int delayTime, Action callBack, int count=1)    {        int taskID = GettaskId();        FrameTask timeTask = new FrameTask(taskID, count, frameTime+frame, delayTime, callBack);        //添加到idList里        //添加到缓存里        idList.Add(taskID);        cacheFrameTasks.Add(timeTask);        return taskID;    }    //删除任务    public bool DeleteFrameTask(int taskId)    {        //寻找任务        bool isDelete = false;        for (int i = 0; i < cacheFrameTasks.Count; i++)        {            if (cacheFrameTasks[i].taskID == taskId)            {                cacheFrameTasks.RemoveAt(i);                isDelete = true;                break;            }        }        if (!isDelete)        {            for (int i = 0; i < frameTasks.Count; i++)            {                if (frameTasks[i].taskID == taskId)                {                    frameTasks.RemoveAt(i);                    isDelete = true;                    break;                }            }        }        return isDelete;    }    //替换任务    public bool ReplaceFrameTask(int id, int frameTime, int delayTime, Action callBack, int count= 1)    {        //构造新任务              int taskID = GettaskId();        FrameTask newFrameTask = new FrameTask(taskID, count, frameTime+frame, delayTime, callBack);        //寻找要替换的id        //寻找任务        bool isReplace = false;        for (int i = 0; i < cacheFrameTasks.Count; i++)        {            if (cacheFrameTasks[i].taskID == id)            {                cacheFrameTasks[i] = newFrameTask;                isReplace = true;                break;            }        }        if (!isReplace)        {            for (int i = 0; i < frameTasks.Count; i++)            {                if (frameTasks[i].taskID == id)                {                    frameTasks[i] =newFrameTask;                    isReplace = true;                    break;                }            }        }        return isReplace;    }    #endregion
public void AddFrameTask()    {       taskFrameID=timeSys.AddFrameTask(60, 60, () => { Debug.Log("执行帧任务:" + taskFrameID); }, 6);    }    public void DeleteFrameTask()    {        bool success = timeSys.DeleteFrameTask(taskFrameID);        Debug.Log("删除帧任务id:" + taskID + success);    }    public void ReplaceFrameTask()    {        bool success = timeSys.ReplaceFrameTask(taskFrameID,60, 60, () => { Debug.Log("执行新的替换的帧任务"); }, 5);        Debug.Log("替换:" + success);    }

在这里插入图片描述

转载地址:http://pjrxo.baihongyu.com/

你可能感兴趣的文章
使用Windows live movie maker轻松与朋友分享视频
查看>>
我的友情链接
查看>>
数据库死锁的类型
查看>>
找水王
查看>>
grep及正则表达式
查看>>
MongoDB常用命令大全
查看>>
Python程序的执行过程
查看>>
Proxmox-VE搭配Ceph存储组建高可用虚拟化平台
查看>>
前端基础---JavaScript
查看>>
Linux关于大于2T的磁盘分区格式化
查看>>
lamp系列-MySQL主从复制原理视频(老男孩出品)
查看>>
堆和栈的区别
查看>>
Android 编辑框(EditText)属性学习
查看>>
【系列7】使用Dockerfile创建带mysql的Centos Docker镜像
查看>>
部分3G网卡连接Cisco ***后不能访问内网资源
查看>>
JavaScript 核心知识点
查看>>
Beta阶段——Scrum 冲刺博客第二天
查看>>
【转】jqGrid学习之介绍
查看>>
linux 后台运行 程序 命令
查看>>
HuaWei设置镜像和观察端口
查看>>