欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#开源定时回调库PETimer的使用

程序员文章站 2022-06-30 22:53:16
PETimer PETimer开源项目GitHub地址: "点击跳转" PETimer 1.双端通用:基于C 语言实现的高效便捷计时器,可运行在服务器(.net core/.net framework)以及Unity客户端环境中。 2.功能丰富:PETimer支持帧数定时以及时间定时。定时任务可循环 ......

petimer

petimer开源项目github地址:点击跳转

petimer

1.双端通用:基于c#语言实现的高效便捷计时器,可运行在服务器(.net core/.net framework)以及unity客户端环境中。

2.功能丰富:petimer支持帧数定时以及时间定时。定时任务可循环、可替换、可取消。可使用独立线程计时(自行设定检测间隔),也可以使用外部驱动计时,比如使用monobehaviour中的update()函数来驱动。

3.集成简单:只有一个petimer.cs文件,只需实例化一个petimer类,对接相应的api,便能整合进自己的游戏框架,实现便捷高效的定时回调服务。

技术支持qq:1785275942

使用示意:

1.unity当中使用

//实例化计时类
petimer pt = new petimer();
//时间定时任务
pt.addtimetask(timertask, 500, petimeunit.millisecond, 3);
//帧数定时任务
pt.addframetask(frametask, 100, 3);

int tempid = pt.addtimetask((int tid) => {
    debug.log("定时等待替换......");
}, 1, petimeunit.second, 0);

//定时任务替换
pt.replacetimetask(tempid, (int tid) => {
    debug.log("定时任务替换完成......");
}, 2, petimeunit.second, 0);

//定时任务删除
pt.deletetimetask(tempid);

//定时检测与处理由monobehaviour中的update()函数来驱动
void update() {
    pt.update();
}

2.服务器中使用

第一种用法:运行线程检测并处理任务(类似于在unity中使用)

petimer pt = new petimer();
//必须在while循环中调用pt.update()来驱动计时
while (true) {
    pt.update();
}

第二种用法:独立线程检测并处理任务

//在petimer实例化时,传入检测间隔参数(单位毫秒)
petimer pt = new petimer(100);

关于定时任务的添加、替换、删除与unity当中使用方法一致

3.可设置定时回调处理器

当定时任务的回调处理可通过设置处理handle来覆盖默认的执行处理(一般用于独立线程计时)

pt.sethandle((action<int> cb, int tid) => {
    //覆盖默认的回调处理
    //todo
});

4.日志工具接口

通过setlog(action

pt.setlog((string info) => {
    debug.log("loginfo:" + info);
});

5.其它常用api

//获取本地datetime
public datetime getlocaldate();
//获取年份
public int getyear();
//获取月份
public int getmonth();
//获取天数
public int getday();
//获取星期
public int getweek();
//获取自1970-1-1以来的毫秒总数
public double getmillisecondstime();
//获取当前时间字符串
public string getlocaltimestr();