Bagikan melalui


FtpWebRequest.BeginGetResponse(AsyncCallback, Object) Metode

Definisi

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

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.

Berlaku untuk

Lihat juga