static void TickRoom(GameRoom room, int tick = 100) { var timer = new System.Timers.Timer(); timer.Interval = tick; timer.Elapsed += ((s, e) => { room.Update(); }); timer.AutoReset = true; timer.Enabled = true; _timers.Add(timer); }
// Main 함수에서 While 안에 Update 돌릴때와 다른 점은 // 이제 update 작업을 main 함수를 작업하는 쓰레드만 하는게 아니라 // 다른 쓰레드들도 update 작업에 동원 될 수 있다. static void TickRoom(GameRoom room, int tick = 1000) { var timer = new System.Timers.Timer(); timer.Interval = tick; // 몇(ms)마다 반복할지 timer.Elapsed += (s, e) => { room.Update(); }; // 반복할 작업 timer.AutoReset = true; // 작업 후 재실행 여부 timer.Enabled = true; // 실행 _timers.Add(timer); // 나중에 끄고싶을수도 있으니 // timer.Stop(); }