diff --git a/Sys.cpp b/Sys.cpp index 0ad53ea1..3336a3f9 100644 --- a/Sys.cpp +++ b/Sys.cpp @@ -574,6 +574,17 @@ bool TSys::SetTask(uint taskid, bool enable, int usNextTime) return true; } +// 改变任务周期 +bool TSys::SetTaskPeriod(uint taskid, Int64 period) +{ + Task* task = Task::Get(taskid); + if(!task) return false; + + task->Period = period; + + return true; +} + void TSys::Start() { #if DEBUG diff --git a/Sys.h b/Sys.h index 1ff7f772..37acb2c8 100644 --- a/Sys.h +++ b/Sys.h @@ -130,6 +130,8 @@ public: void RemoveTask(uint taskid); // 设置任务的开关状态,同时运行指定任务最近一次调度的时间,0表示马上调度 bool SetTask(uint taskid, bool enable, int usNextTime = -1); + // 改变任务周期 + bool SetTaskPeriod(uint taskid, Int64 period); void Start(); // 开始系统大循环 Func OnStart; }; diff --git a/TinyNet/TinyClient.cpp b/TinyNet/TinyClient.cpp index 40a3e259..c9a8983e 100644 --- a/TinyNet/TinyClient.cpp +++ b/TinyNet/TinyClient.cpp @@ -279,10 +279,9 @@ bool TinyClient::OnJoin(TinyMessage& msg) Password.Show(true); // 取消Join任务,启动Ping任务 - Task* task = Task::Get(_TaskID); ushort time = Config.PingTime; if(time < 5) time = 5; - task->Period = time * 1000000; + Sys.SetTaskPeriod(_TaskID, time * 1000000); // 组网成功更新一次最后活跃时间 LastActive = Time.Current(); @@ -307,8 +306,7 @@ void TinyClient::Ping() debug_printf("%d 秒无法联系,服务端可能已经掉线,重启Join任务,关闭Ping任务\r\n", off); - Task* task = Task::Get(_TaskID); - task->Period = 5000000; + Sys.SetTaskPeriod(_TaskID, 5000000); Server = 0; Password = 0;