Ejemplo n.º 1
0
        private void SendData(object stateObject)
        {
            try
            {
                if (fPreviousPacket == null)
                {
                    try
                    {
                        fClient.fConnection.BeginSend(fBytes, fOffset, fLength, 0, new AsyncCallback(SendCallback), fClient.fConnection);
                        fDataSendCompleted.WaitOne();
                    }
                    catch (Exception exception)
                    {
                        fCancel = true;
                        fClient.DisconnectMe();
                    }
                }
                else
                {
                    fPreviousPacket.fDone.WaitOne();

                    if (!fCancel && !fPreviousPacket.fCancel)
                    {
                        try
                        {
                            fClient.fConnection.BeginSend(fBytes, fOffset, fLength, 0, new AsyncCallback(SendCallback), fClient.fConnection);
                            fDataSendCompleted.WaitOne();
                        }
                        catch (Exception exception)
                        {
                            fCancel = true;
                            fClient.DisconnectMe();
                        }
                    }
                    else
                    {
                        fCancel = true;
                    }
                }
            }
            catch (Exception ex)
            {
            }

            if (fPreviousPacket != null)
            {
                fPreviousPacket = null;
            }


            fDone.Set();
        }