FtpWebRequest.BeginGetResponse(AsyncCallback, Object) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mulai mengirim permintaan dan menerima respons dari server FTP secara asinkron.
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
Parameter
- callback
- AsyncCallback
Delegasi AsyncCallback yang mereferensikan metode untuk dipanggil saat operasi selesai.
- state
- Object
Objek yang ditentukan pengguna yang berisi informasi tentang operasi. Objek ini diteruskan ke callback
delegasi ketika operasi selesai.
Mengembalikan
Instans IAsyncResult yang menunjukkan status operasi.
Pengecualian
GetResponse() atau BeginGetResponse(AsyncCallback, Object) telah dipanggil untuk instans ini.
Contoh
Contoh kode berikut menunjukkan mengakhiri operasi asinkron untuk mendapatkan aliran permintaan, lalu memulai permintaan untuk mendapatkan respons. Contoh kode ini adalah bagian dari contoh yang lebih besar yang disediakan untuk FtpWebRequest gambaran umum kelas.
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;
}
}
Keterangan
Anda harus menyelesaikan operasi asinkron dengan memanggil EndGetResponse metode . Biasanya, EndGetResponse dipanggil oleh metode yang dirujuk oleh callback
. Untuk menentukan status operasi, periksa properti dalam objek yang IAsyncResult dikembalikan oleh BeginGetResponse metode .
Proxy Jika properti diatur, baik secara langsung atau dalam file konfigurasi, komunikasi dengan server FTP dilakukan melalui proksi yang ditentukan.
BeginGetResponse tidak memblokir saat menunggu respons dari server. Untuk memblokir, panggil GetResponse metode sebagai pengganti BeginGetResponse.
Untuk informasi selengkapnya tentang menggunakan model pemrograman asinkron, lihat Memanggil Metode Sinkron Secara Asinkron.
Anggota ini mengeluarkan informasi pelacakan saat Anda mengaktifkan pelacakan jaringan di aplikasi Anda. Untuk informasi selengkapnya, lihat Pelacakan Jaringan di .NET Framework.
Catatan
WebException Jika dilemparkan, gunakan Response properti dan Status pengecualian untuk menentukan respons dari server.
Catatan Bagi Pemanggil
Metode ini menghasilkan lalu lintas jaringan.