Пример #1
0
        private void NetWrite()
        {
            WaitHandle[] wait = new WaitHandle[]
            {
                exitEvent,
                m_MsgQueue
            };

            bool bCont = true;

            while (bCont)
            {
                int res = WaitHandle.WaitAny(wait);
                switch (res)
                {
                case 0:
                    bCont = false;

                    for (int i = 0; i < NetworkConnectivity.m_Channels.Count; i++)
                    {
                        NetworkChannel ch = (NetworkChannel)NetworkConnectivity.m_Channels[i];
                        if (ch != null)
                        {
                            ch.Disconnect();
                        }
                    }
                    NetworkConnectivity.m_Channels.Clear();
                    break;

                case 1:
                    NetQueuedMessage ntcpm = m_MsgQueue.Dequeue(100) as NetQueuedMessage;
                    if (ntcpm != null && ntcpm.m_Socket != null)
                    {
                        rWrite(ntcpm.m_Channel, ntcpm.m_Socket, ntcpm.Data);
                    }
                    break;
                }
            }

            exitEvent.Reset();
        }