async public void ChangeTimeState(EGameTimeState state) { TimeState = state; var ack = new Packet(EGamePacket.SRoomChangeSubState); ack.Write((uint)state); if (state == EGameTimeState.HalfTime) { await Task.Factory.StartNew(() => { for (var i = 10; i > -1; i--) // 10 seconds { BroadcastEventMessage(EPlayerEventMessage.HalfTimeIn, i.ToString(), 2); Task.Delay(1000).Wait(); } }); Broadcast(ack); await Task.Delay(25000); // 25 seconds half time ChangeTimeState(EGameTimeState.SecondHalf); RoundStartTime = DateTime.Now; return; } Broadcast(ack); }