コード例 #1
0
        // 패킷 전송 메서드
        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);
                }
            }
        }