Поделиться через


FtpWebRequest.EndGetResponse(IAsyncResult) Метод

Определение

Завершает асинхронную операцию в очереди, начинавшуюся с BeginGetResponse(AsyncCallback, Object).

public:
 override System::Net::WebResponse ^ EndGetResponse(IAsyncResult ^ asyncResult);
public override System.Net.WebResponse EndGetResponse (IAsyncResult asyncResult);
override this.EndGetResponse : IAsyncResult -> System.Net.WebResponse
Public Overrides Function EndGetResponse (asyncResult As IAsyncResult) As WebResponse

Параметры

asyncResult
IAsyncResult

Объект IAsyncResult, который был возвращен в начале операции.

Возвращаемое значение

Ссылка WebResponse, которая содержит экземпляр FtpWebResponse. Этот объект содержит ответ FTP-сервера на запрос.

Исключения

asyncResult имеет значение null.

Параметр asyncResult не был получен путем вызова BeginGetResponse(AsyncCallback, Object).

Этот метод уже был вызван для операции, указанной в параметре asyncResult.

Произошла ошибка при использовании прокси-сервера HTTP.

Примеры

В следующем примере кода показано завершение асинхронной операции для получения ответа. Этот пример кода является частью более крупного примера, предоставленного FtpWebRequest для обзора класса.

// The EndGetResponseCallback method  
// completes a call to BeginGetResponse.
static void EndGetResponseCallback( IAsyncResult^ ar )
{
   FtpState^ state = dynamic_cast<FtpState^>(ar->AsyncState);
   FtpWebResponse ^ response = nullptr;
   try
   {
      response = dynamic_cast<FtpWebResponse^>(state->Request->EndGetResponse( ar ));
      response->Close();
      state->StatusDescription = response->StatusDescription;

      // Signal the main application thread that 
      // the operation is complete.
      state->OperationComplete->Set();
   }
   // Return exceptions to the main application thread.
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Error getting response." );
      state->OperationException = e;
      state->OperationComplete->Set();
   }
}
// The EndGetResponseCallback method
// completes a call to BeginGetResponse.
private static void EndGetResponseCallback(IAsyncResult ar)
{
    FtpState state = (FtpState) ar.AsyncState;
    FtpWebResponse response = null;
    try
    {
        response = (FtpWebResponse) state.Request.EndGetResponse(ar);
        response.Close();
        state.StatusDescription = response.StatusDescription;
        // Signal the main application thread that
        // the operation is complete.
        state.OperationComplete.Set();
    }
    // Return exceptions to the main application thread.
    catch (Exception e)
    {
        Console.WriteLine ("Error getting response.");
        state.OperationException = e;
        state.OperationComplete.Set();
    }
}

Комментарии

Если операция не завершилась во время EndGetResponse вызова метода, EndGetResponse блокируется до завершения операции. Чтобы предотвратить блокировку IsCompleted , проверьте свойство перед вызовом EndGetResponse.

Помимо исключений, указанных в разделе "Исключения" EndGetResponse , повторно создает исключения, которые были созданы при взаимодействии с сервером.

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. Дополнительные сведения см. в статье Трассировка сети в .NET Framework.

Примечания для тех, кто вызывает этот метод

Этот метод создает сетевой трафик.

Применяется к

См. также раздел