FtpWebRequest.EndGetRequestStream(IAsyncResult) Metod

Definition

Avslutar en väntande asynkron åtgärd som startats med 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

Parametrar

asyncResult
IAsyncResult

Objektet IAsyncResult som returnerades när åtgärden startades.

Returer

En skrivbar Stream instans som är associerad med den här instansen.

Undantag

asyncResult är null.

asyncResult hämtades inte genom att anropa BeginGetRequestStream(AsyncCallback, Object).

Den här metoden anropades redan för den åtgärd som identifierades av asyncResult.

Exempel

I följande kodexempel visas hur du avslutar en asynkron åtgärd för att hämta en begärans dataström. Det här kodexemplet är en del av ett större exempel som tillhandahålls för klassöversikten FtpWebRequest .

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;
    }
}

Kommentarer

Om åtgärden inte har slutförts blockeras metoden tills åtgärden har slutförts EndGetRequestStream . Kontrollera egenskapen innan du anropar IsCompletedför att avgöra om åtgärden har slutförtsEndGetRequestStream.

Förutom de undantag som anges i "Undantag" EndGetRequestStream återanväxar undantag som utlöstes när strömmen öppnades för skrivning.

Note

Den här medlemmen matar ut spårningsinformation när du aktiverar nätverksspårning i ditt program. Mer information finns i Network Tracing i .NET Framework.

Gäller för

Se även