Sdílet prostřednictvím


FtpWebRequest.EndGetRequestStream(IAsyncResult) Metoda

Definice

Ukončí čekající asynchronní operaci spuštěnou s BeginGetRequestStream(AsyncCallback, Object).

public:
 override System::IO::Stream ^ EndGetRequestStream(IAsyncResult ^ asyncResult);
public override System.IO.Stream EndGetRequestStream(IAsyncResult asyncResult);
override this.EndGetRequestStream : IAsyncResult -> System.IO.Stream
Public Overrides Function EndGetRequestStream (asyncResult As IAsyncResult) As Stream

Parametry

asyncResult
IAsyncResult

Objekt IAsyncResult , který byl vrácen při spuštění operace.

Návraty

Zapisovatelná instance přidružená Stream k této instanci.

Výjimky

asyncResult je null.

asyncResult nebyl získán voláním BeginGetRequestStream(AsyncCallback, Object).

Tato metoda byla již volána pro operaci identifikovanou asyncResult.

Příklady

Následující příklad kódu ukazuje ukončení asynchronní operace pro získání streamu požadavku. Tento příklad kódu je součástí většího příkladu FtpWebRequest , který je k dispozici pro přehled třídy.

private static void EndGetStreamCallback(IAsyncResult ar)
{
    FtpState state = (FtpState) ar.AsyncState;

    Stream requestStream = null;
    // End the asynchronous call to get the request stream.
    try
    {
        requestStream = state.Request.EndGetRequestStream(ar);
        // Copy the file contents to the request stream.
        const int bufferLength = 2048;
        byte[] buffer = new byte[bufferLength];
        int count = 0;
        int readBytes = 0;
        FileStream stream = File.OpenRead(state.FileName);
        do
        {
            readBytes = stream.Read(buffer, 0, bufferLength);
            requestStream.Write(buffer, 0, readBytes);
            count += readBytes;
        }
        while (readBytes != 0);
        Console.WriteLine ("Writing {0} bytes to the stream.", count);
        // IMPORTANT: Close the request stream before sending the request.
        requestStream.Close();
        // Asynchronously get the response to the upload request.
        state.Request.BeginGetResponse(
            new AsyncCallback (EndGetResponseCallback),
            state
        );
    }
    // Return exceptions to the main application thread.
    catch (Exception e)
    {
        Console.WriteLine("Could not get the request stream.");
        state.OperationException = e;
        state.OperationComplete.Set();
        return;
    }
}

Poznámky

Pokud operace není dokončena, metoda blokuje, EndGetRequestStream dokud se operace nedokončí. Chcete-li zjistit, zda operace byla dokončena, zkontrolujte IsCompleted vlastnost před voláním EndGetRequestStream.

Kromě výjimek, které jsou uvedeny v části Výjimky, EndGetRequestStream znovu zvětšují výjimky, které byly vyvolány při otevírání datového proudu pro zápis.

Poznámka:

Tento člen vypíše informace o trasování, když ve své aplikaci povolíte trasování sítě. Další informace naleznete v tématu Trasování sítě v rozhraní .NET Framework.

Platí pro

Viz také