From 65d18e87272b4d22eaf917365da199810136430d Mon Sep 17 00:00:00 2001 From: nnhy Date: Sat, 22 Aug 2015 06:37:53 +0000 Subject: [PATCH] =?UTF-8?q?Sys=E5=A2=9E=E5=8A=A0=E8=AE=BE=E5=AE=9A?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=91=A8=E6=9C=9F=E7=9A=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sys.cpp | 11 +++++++++++ Sys.h | 2 ++ TinyNet/TinyClient.cpp | 6 ++---- 3 files changed, 15 insertions(+), 4 deletions(-) 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;