예제 #1
0
        public Test_Time()
        {
            // 假设我们有特殊的需求需要关闭此对象的更新可以调用
            // 如果可能尽可能在不再使用时调用此函数
            // Close();
            // 同样需要关闭一切进程中的更新可以使用此类的静态函数
            // TimeFlow.CloseAll();
            // 如果只是暂停的话 那么可以调用
            // Pause();
            // 再次恢复时间更新
            // Start();
            // 最后如果你需要查看此时update的状态话可以通过以下两个变量
            // isPause
            // isStop
            timeFlow = TimeFlow.Create(this);

            // 时间执行器
            // 了解了TimeFlow有时候觉得太繁琐
            // 项目中根本不需要使用到那么就可以使用此类
            // 这个类根据类似Task设计思想开发
            // 但是他们还是有些区别,注意不管是这类函数操作中不要在包含一些特别耗时的操作
            // 比如说 Thread.Sleep 这种
            TimeCaller caller = TimeCaller.Create(2000, 10000, true);

            // 执行函数可以通过这个函数进行绑定,也可以在构造对象的时候写入
            // 这个可以自行查看函数提示 我这边只是为了简单事例
            caller.CallMethod((long count) => { Console.WriteLine("Hello TimeCaller"); });

            // 接下来就是贯穿在以上两个类的一个重要类
            // TimeFix 时间修正类 当然需要特殊处理时间循环的时候可以单独使用这个类
            // 只需要告诉这个对象 想要的循环时间周期即可完成必要的时间修补
            // 注意此类没有沉睡Sleep函数 所以等待需要自己处理
            int     periodNow = 1000;
            TimeFix timeFix   = new TimeFix(1000);

            /* 这里我没有写Thread 那么就认为这个Thread开始 */
            // 如果在一个循环中 这个函数应该就在循环的最开始处
            timeFix.Begin();
            // 沉睡相应时间
            Thread.Sleep(periodNow);
            // 打印日志
            Console.WriteLine("Hello TimeFix");
            // 如果在一个循环中 这个函数应该在循环的最后结束
            periodNow = timeFix.End();
            /* 至此第一次Thread循环结束 第二次开始 */
            timeFix.Begin();
            Thread.Sleep(periodNow);
            Console.WriteLine("Hello TimeFix2");
            periodNow = timeFix.End();
            /* 以此循环往复 而periodNow的值会根据每次的耗时不同进行不断的修正 */
            timeFlow.Start();

            // 临时变量 测试时间流自动停止
            StartTempTime();
            // 需要gc回收一下
            // 此处gc不会影响当前大括号的其他定时器,因为这个函数域还没结束
            GC.Collect();
        }
예제 #2
0
        private void StartTempTime()
        {
            TimeCaller caller = TimeCaller.Create(1000, 10000, true);

            // 执行函数可以通过这个函数进行绑定,也可以在构造对象的时候写入
            // 这个可以自行查看函数提示 我这边只是为了简单事例
            caller.CallMethod((long count) => { Console.WriteLine("Hello TimeCaller2"); });
            // 时间流
            for (int i = 0; i < 100; i++)
            {
                new Time2();
            }
        }
예제 #3
0
 public void OnOpen(HyperSocket socket)
 {
     // timeCaller1[i] = new TimeCaller(rd.Next(1000, 5000), rd.Next(500, 1000), true, -1, () =>
     // {
     // socket.SendTcp(1.ToString());
     // });
     fff = true;
     Console.WriteLine($"Connect Num:{++num}");
     // Console.WriteLine($"Connect OK:{socket.SessionId}");
     timeCaller2[index++] = TimeCaller.Create(1000, 50, true, -1, (long count) =>
     {
         socket.SendUdp(count.ToString());
     });
 }