Bagikan melalui


Fungsi UnregisterWaitEx (threadpoollegacyapiset.h)

Membatalkan operasi tunggu terdaftar yang dikeluarkan oleh fungsi RegisterWaitForSingleObject .

Sintaks

BOOL UnregisterWaitEx(
  [in]           HANDLE WaitHandle,
  [in, optional] HANDLE CompletionEvent
);

Parameter

[in] WaitHandle

Handel tunggu. Handel ini dikembalikan oleh fungsi RegisterWaitForSingleObject .

[in, optional] CompletionEvent

Handel ke objek peristiwa yang akan disinyalkan ketika operasi tunggu telah dibatalkan pendaftarannya. Parameter ini bisa NULL.

Jika parameter ini INVALID_HANDLE_VALUE, fungsi menunggu semua fungsi panggilan balik selesai sebelum kembali.

Jika parameter ini NULL, fungsi menandai timer untuk penghapusan dan segera kembali. Namun, sebagian besar penelepon harus menunggu fungsi panggilan balik selesai sehingga mereka dapat melakukan pembersihan yang diperlukan.

Jika pemanggil menyediakan peristiwa ini dan fungsi berhasil atau fungsi gagal dengan ERROR_IO_PENDING, jangan tutup peristiwa sampai disinyalkan.

Nilai kembali

Jika fungsi berhasil, nilai yang dikembalikan bukan nol.

Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Keterangan

Anda tidak dapat melakukan panggilan pemblokiran ke UnregisterWaitEx dari dalam fungsi panggilan balik untuk operasi tunggu yang sama. Jika tidak, panggilan balik akan menunggu dirinya selesai. Secara umum, panggilan pemblokiran ke UnregisterWaitEx membuat dependensi antara utas saat ini dan panggilan balik, jadi untuk melakukan pemblokiran panggilan batalkan pendaftaran pada operasi tunggu lain, Anda harus memastikan bahwa fungsi panggilan balik tidak bergantung satu sama lain dan bahwa operasi tunggu kedua tidak juga melakukan pemblokiran panggilan batalkan pendaftaran pada operasi pertama.

Berhati-hatilah saat melakukan pemblokiran panggilan UnregisterWaitEx pada utas persisten. Jika operasi tunggu yang tidak terdaftar dibuat dengan WT_EXECUTEINPERSISTENTTHREAD, kebuntuan dapat terjadi.

Setelah melakukan panggilan non-pemblokiran ke UnregisterWaitEx, tidak ada fungsi panggilan balik baru yang terkait dengan WaitHandle yang dapat diantrekan. Namun, mungkin ada fungsi panggilan balik yang tertunda yang sudah diantrekan ke utas pekerja.

Dalam beberapa kondisi, fungsi akan gagal dengan ERROR_IO_PENDING jika CompletionEvent adalah NULL. Ini menunjukkan bahwa ada fungsi panggilan balik yang luar biasa. Panggilan balik tersebut akan dijalankan atau berada di tengah-tengah eksekusi.

Jika CompletionEvent adalah handel ke peristiwa yang disediakan oleh pemanggil, fungsi mungkin berhasil, gagal dengan ERROR_IO_PENDING, atau gagal dengan kode kesalahan yang berbeda. Jika fungsi berhasil, atau jika fungsi gagal dengan ERROR_IO_PENDING, pemanggil harus selalu menunggu sampai peristiwa disinyalkan untuk menutup peristiwa. Jika fungsi gagal dengan kode kesalahan yang berbeda, tidak perlu menunggu sampai peristiwa disinyalkan untuk menutup peristiwa.

Windows XP: Jika CompletionEvent adalah handel ke peristiwa yang disediakan oleh pemanggil dan fungsi gagal dengan ERROR_IO_PENDING, pemanggil harus menunggu hingga peristiwa disinyalkan untuk menutup peristiwa. Perilaku ini berubah dimulai dengan Windows Vista.

Untuk mengkompilasi aplikasi yang menggunakan fungsi ini, tentukan _WIN32_WINNT sebagai 0x0500 atau yang lebih baru. Untuk informasi selengkapnya, lihat Menggunakan Header Windows.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header threadpoollegacyapiset.h (termasuk Windows.h)
Pustaka Kernel32.lib
DLL Kernel32.dll

Lihat juga

RegisterWaitForSingleObject

Fungsi Sinkronisasi

Pengumpulan Utas