Bagikan melalui


Membatalkan Panggilan Asinkron

Klien dapat membatalkan panggilan asinkron yang sedang berlangsung jika objek panggilan mengimplementasikan antarmuka ICancelMethodCalls . Untuk objek yang menggunakan marshaling standar, ICancelMethodCalls selalu tersedia untuk panggilan marshal. Untuk objek yang menggunakan marshaling kustom atau untuk panggilan ke objek server dalam apartemen yang sama, fungsionalitas ini hanya tersedia jika objek panggilan mengimplementasikan ICancelMethodCalls.

Klien dapat membatalkan panggilan kapan saja, dari kapan metode Begin_ dipanggil hingga metode Finish_ kembali. Jika klien membatalkan panggilan sebelum memanggil metode Finish_, klien harus memanggil metode Finish_ untuk membersihkan status objek panggilan. Sampai klien melakukannya, setiap panggilan ke metode Begin_ apa pun pada objek panggilan akan mengembalikan RPC_E_CALL_PENDING.

Untuk membatalkan panggilan asinkron

  1. Kueri objek panggilan untuk ICancelMethodCalls.

  2. Panggil ICancelMethodCalls::Cancel, lalu panggil Rilis untuk merilis pointer yang diperoleh oleh panggilan QueryInterface di langkah 1.

  3. Jika klien belum memanggil metode Finish_, panggil sekarang.

Tidak ada jaminan bahwa server benar-benar menghentikan eksekusi panggilan. Jika pekerjaan klien lebih lanjut tergantung pada beberapa status server bahwa panggilan mungkin atau mungkin tidak berubah, klien harus menentukan status tersebut sebelum melanjutkan.

Melakukan Panggilan Asinkron