FtpWebRequest.BeginGetResponse(AsyncCallback, Object) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Начинает отправлять запрос и получать ответ от FTP-сервера асинхронно.
public:
override IAsyncResult ^ BeginGetResponse(AsyncCallback ^ callback, System::Object ^ state);
public override IAsyncResult BeginGetResponse(AsyncCallback? callback, object? state);
public override IAsyncResult BeginGetResponse(AsyncCallback callback, object state);
override this.BeginGetResponse : AsyncCallback * obj -> IAsyncResult
Public Overrides Function BeginGetResponse (callback As AsyncCallback, state As Object) As IAsyncResult
Параметры
- callback
- AsyncCallback
Делегат AsyncCallback , ссылающийся на метод для вызова при завершении операции.
- state
- Object
Определяемый пользователем объект, содержащий сведения об операции. Этот объект передается callback делегату после завершения операции.
Возвращаемое значение
Экземпляр IAsyncResult , указывающий состояние операции.
Исключения
GetResponse() или BeginGetResponse(AsyncCallback, Object) уже был вызван для этого экземпляра.
Примеры
В следующем примере кода показано завершение асинхронной операции для получения потока запроса, а затем запуска запроса для получения ответа. Этот пример кода является частью более крупного примера, предоставленного для 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;
}
}
Комментарии
Необходимо выполнить асинхронную операцию, вызвав EndGetResponse метод. Как правило, вызывается методом, EndGetResponse на который callbackссылается. Чтобы определить состояние операции, проверьте свойства объекта IAsyncResult , возвращаемого методом BeginGetResponse .
Proxy Если свойство задано напрямую или в файле конфигурации, обмен данными с FTP-сервером осуществляется через указанный прокси-сервер.
BeginGetResponse не блокируется при ожидании ответа от сервера. Чтобы заблокировать, вызовите GetResponse метод вместо BeginGetResponse.
Дополнительные сведения об использовании асинхронной модели программирования см. в статье "Вызов синхронных методов асинхронно".
Этот элемент выводит сведения о трассировке при включении трассировки сети в приложении. Дополнительные сведения см. в разделе "Трассировка сети" в .NET Framework.
Замечание
WebException Если создается исключение, используйте ResponseStatus свойства исключения, чтобы определить ответ с сервера.
Примечания для тех, кто вызывает этот метод
Этот метод создает сетевой трафик.