// 패킷 전송 메서드 public void SendPacket(CustomPacket packet) { CustomPacket clonePacket = new CustomPacket(); packet.CopyTo(clonePacket); lock (m_lockQueue) { // 큐가 비어있다면 큐에 추가 후 바로 비동기 송신 메서드를 호출한다. if (m_sendQueue.Count <= 0) { m_sendQueue.Enqueue(clonePacket); StartSend(); return; } else { // 큐가 비어있지 않다면 아직 이전 패킷의 전송이 완료되지 않은 것임. // 이전 SendAsync의 호출이 완료된 이후 큐를 검사하여 데이터가 있으면 SendAsync를 호출하여 전송할 것임. Console.WriteLine($"Queue is not empty. Copy and Enqueue the packet. protocol ID : {packet.m_protocolID}"); m_sendQueue.Enqueue(clonePacket); } } }