Bagikan melalui


Fungsi DeleteTimerQueueTimer (threadpoollegacyapiset.h)

Menghapus timer dari antrean timer dan secara opsional menunggu fungsi panggilan balik timer yang sedang berjalan selesai sebelum menghapus timer.

Sintaks

BOOL DeleteTimerQueueTimer(
  [in, optional] HANDLE TimerQueue,
  [in]           HANDLE Timer,
  [in, optional] HANDLE CompletionEvent
);

Parameter

[in, optional] TimerQueue

Handel ke antrean timer. Handel ini dikembalikan oleh fungsi CreateTimerQueue .

Jika timer dibuat menggunakan antrean timer default, parameter ini harus NULL.

[in] Timer

Handel ke timer-queue timer. Handel ini dikembalikan oleh fungsi CreateTimerQueueTimer .

[in, optional] CompletionEvent

Handel ke objek peristiwa yang akan disinyalkan ketika sistem telah membatalkan timer dan semua fungsi panggilan balik telah selesai. Parameter ini bisa NULL.

Jika parameter ini INVALID_HANDLE_VALUE, fungsi menunggu fungsi panggilan balik timer yang sedang berjalan selesai sebelum kembali.

Jika parameter ini NULL, fungsi menandai timer untuk dihapus dan segera kembali. Jika timer telah kedaluwarsa, fungsi panggilan balik timer akan berjalan hingga selesai. Namun, tidak ada pemberitahuan yang dikirim ketika fungsi panggilan balik timer telah selesai. Sebagian besar penelepon tidak boleh menggunakan opsi ini, dan harus menunggu menjalankan fungsi panggilan balik timer selesai sehingga mereka dapat melakukan pembersihan yang diperlukan.

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. Jika kode kesalahan ERROR_IO_PENDING, tidak perlu memanggil fungsi ini lagi. Untuk kesalahan lainnya, Anda harus mencoba kembali panggilan.

Keterangan

Fungsi ini tidak dapat dipanggil saat utas menggunakan peniruan identitas. Perilaku yang dihasilkan tidak ditentukan.

Anda dapat mengatur CompletionEvent ke INVALID_HANDLE_VALUE saat memanggil fungsi ini dari dalam timer callback timer lain selama fungsi panggilan balik tidak dijalankan di utas timer. Namun, kebuntuan dapat terjadi jika dua fungsi panggilan balik mencoba memblokir panggilan DeleteTimerQueueTimer pada timer masing-masing orang. Selain itu, Anda tidak dapat melakukan panggilan penghapusan pemblokiran pada timer yang terkait dengan panggilan balik.

Berhati-hatilah saat melakukan pemblokiran panggilan DeleteTimerQueueTimer pada utas persisten. Jika timer yang dihapus dibuat dengan WT_EXECUTEINPERSISTENTTHREAD, kebuntuan dapat terjadi.

Jika ada fungsi panggilan balik yang luar biasa dan CompletionEventADALAH NULL, fungsi akan gagal dan mengatur kode kesalahan ke ERROR_IO_PENDING. Ini menunjukkan bahwa ada fungsi panggilan balik yang luar biasa. Panggilan balik tersebut akan dijalankan atau sedang dieksekusi. Timer dibersihkan ketika fungsi panggilan balik selesai dijalankan.

Untuk membatalkan semua timer dalam antrean timer, panggil fungsi DeleteTimerQueueEx .

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
Pustaka Kernel32.lib
DLL Kernel32.dll

Lihat juga

CreateTimerQueue

CreateTimerQueueTimer

DeleteTimerQueueEx

Fungsi Sinkronisasi

Antrean Timer