1 Soalan: Bagaimana untuk menjeda pemasa yang dibuat dengan CreateTimerQueueTimer

soalan dicipta di Wed, May 8, 2019 12:00 AM

Saya perlu berhenti sejenak pemasa yang dibuat menggunakan fungsi CreateTimerQueueTimer API win32 tetapi saya tidak dapat mencari jalan untuk menjeda pemasa. Adakah sesiapa tahu jika mungkin?

    
3
  1. Tiada pilihan jeda, anda hanya boleh menghentikannya dan mulailah cadangannya. Itu memerlukan mengukur berapa banyak masa yang telah berlalu pada masa anda berhenti sebentar. Gunakan GetTickCount64 () apabila anda memulakannya, sekali lagi apabila anda berhenti. Berhati-hati adalah dasarnya racy, anda mungkin mendapati bahawa ia telah tamat tempoh tetapi tidak membuat panggilan baliknya lagi. Dalam hal ini adalah yang terbaik untuk tidak melakukan apa-apa. Sekarang anda tahu mengapa ia tidak mempunyai pilihan jeda:)
    2019-05-08 17: 03: 46Z
1 Jawapan                              1                         

Saya percaya anda boleh menghubungi ChangeTimerQueueTimer dan tetapkan _In_ ULONG Period kepada 0. Jika argumen _In_opt_ HANDLE TimerQueue akan menjadi NULL dan _Inout_ HANDLE Timer akan menjadi HANDLE diambil dari CreateTimerQueueTimer . Ini akan melaksanakan panggilan balik dalam pemasa sekali sahaja dan berhenti. Jika anda mahu mengaktifkan semula pemasa anda boleh ChangeTimerQueueTimer sekali lagi dengan pemegang yang sama menyediakan tempoh yang lebih besar daripada 0 untuk dijalankan secara berkala. Tidak ada API khusus untuk menggantung pemasa tetapi menghalangnya daripada berjalan secara berkala harus bersamaan dalam kes anda. Hanya ambil perhatian bahawa panggilan balik anda akan dipukul sekali selepas memanggil ChangeTimerQueueTimer sebelum "menggantung".

    
5
2019-05-08 16: 19: 46Z
  1. DueTime hanya melambatkan pelaksanaan awal. "DueTime [dalam] Jumlah masa dalam milisaat berbanding dengan masa semasa yang mesti berlalu sebelum pemasa diberi isyarat untuk kali pertama." Mungkin terdapat keadaan di mana seseorang mahu mengaktifkan pemasa dengan serta-merta kemudian menjeda pada masa rawak pada masa hadapan.
    2019-05-08 16: 16: 24Z
  2. Terima kasih banyak !!!. Ini pendekatan yang baik Saya fikir saya boleh menambah panggil balik perantaraan hanya untuk mengelakkan untuk memanggil panggil balik pengguna apabila pemasa dijeda.
    2019-05-09 06: 46: 43Z
  3. Ah ya! Idea yang baik saya tidak menganggap menggunakan panggilan balik lain untuk "Menjeda".
    2019-05-09 12: 48: 25Z
sumber diletakkan di sini