FtpWebRequest.BeginGetResponse(AsyncCallback, Object) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Začne odesílat požadavek a přijímat odpověď ze serveru FTP asynchronně.
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
Parametry
- callback
- AsyncCallback
Delegát AsyncCallback , který odkazuje na metodu, která se má vyvolat po dokončení operace.
- state
- Object
Objekt definovaný uživatelem, který obsahuje informace o operaci. Tento objekt se po dokončení operace předá callback
delegátu.
Návraty
Instance IAsyncResult , která označuje stav operace.
Výjimky
GetResponse() nebo BeginGetResponse(AsyncCallback, Object) již byl pro tuto instanci volána.
Příklady
Následující příklad kódu ukazuje ukončení asynchronní operace pro získání streamu požadavku a následné spuštění požadavku na získání odpovědi. 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 = dynamic_cast<FtpState^>(ar->AsyncState);
Stream^ requestStream = nullptr;
// 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;
array<Byte>^buffer = gcnew array<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, bufferLength );
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( gcnew 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;
}
}
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
Musíte dokončit asynchronní operaci voláním EndGetResponse metody. Obvykle je volána metodou, EndGetResponse na kterou odkazuje .callback
Chcete-li zjistit stav operace, zkontrolujte vlastnosti v objektu IAsyncResult vrácené metodou BeginGetResponse .
Proxy Pokud je vlastnost nastavená, buď přímo, nebo v konfiguračním souboru, komunikace se serverem FTP probíhá prostřednictvím zadaného proxy serveru.
BeginGetResponse neblokuje při čekání na odpověď ze serveru. Pokud chcete blokovat, zavolejte metodu GetResponse místo metody BeginGetResponse.
Další informace o použití asynchronního programovacího modelu najdete v tématu Asynchronní volání synchronních metod.
Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace najdete v tématu Trasování sítě v rozhraní .NET Framework.
Poznámka
WebException Pokud je vyvolán, pomocí Response vlastností a Status výjimky určete odpověď ze serveru.
Poznámky pro volající
Tato metoda generuje síťový provoz.