private void ReadData(object stateObject)
        {
            try
            {
                if (fPreviousPacket == null)
                {
                    fConnector.fMessageCollector.AppendData(fData);
                }
                else
                {
                    fPreviousPacket.fDone.WaitOne();
                    if (!fCancel && !fPreviousPacket.fCancel)
                    {
                        fConnector.fMessageCollector.AppendData(fData);
                    }
                    else
                    {
                        fCancel = true;
                    }

                    fPreviousPacket = null;
                }
            }
            catch (Exception ex)
            {
            }

            fDone.Set();
        }
        private void ReadData(object stateObject)
        {
            try
            {
                if (fPreviousPacket == null)
                {
                    fConnector.fMessageCollector.AppendData(fData);
                }
                else
                {
                    fPreviousPacket.fDone.WaitOne();
                    if (!fCancel && !fPreviousPacket.fCancel)
                    {
                        fConnector.fMessageCollector.AppendData(fData);
                    }
                    else
                    {
                        fCancel = true;
                    }

                    fPreviousPacket = null;
                }
            }
            catch (Exception ex)
            {
            }

            fDone.Set();
        }
        public MessageCollectorTCPClientPacket(TCPConnector connector, String data, MessageCollectorTCPClientPacket previousPacket)
        {
            fConnector = connector;
            fData = data;
            fPreviousPacket = previousPacket;

            ThreadPool.QueueUserWorkItem(new WaitCallback(ReadData));
        }
        public MessageCollectorTCPClientPacket(TCPConnector connector, String data, MessageCollectorTCPClientPacket previousPacket)
        {
            fConnector      = connector;
            fData           = data;
            fPreviousPacket = previousPacket;

            ThreadPool.QueueUserWorkItem(new WaitCallback(ReadData));
        }