1 Câu hỏi: Cách tạm dừng bộ hẹn giờ được tạo bằng CreatTimerQueueTimer

câu hỏi được tạo ra tại Wed, May 8, 2019 12:00 AM

Tôi cần tạm dừng bộ hẹn giờ được tạo bằng chức năng CreatTimerQueueTimer của API win32 nhưng tôi không thể tìm cách tạm dừng bộ hẹn giờ. Có ai biết nếu nó có thể?

    
3
  1. Không có tùy chọn tạm dừng, bạn chỉ có thể dừng nó và khởi động lại. Điều đó đòi hỏi phải đo bao nhiêu thời gian đã trôi qua tại thời điểm bạn tạm dừng nó. Sử dụng GetTickCount64 () khi bạn khởi động nó, một lần nữa khi bạn tạm dừng nó. Hãy cẩn thận vì nó không phù hợp về cơ bản, bạn có thể phát hiện ra rằng nó đã hết hạn nhưng chưa thực hiện cuộc gọi lại. Trong trường hợp tốt nhất là không làm gì cả. Bây giờ bạn biết tại sao nó không có tùy chọn tạm dừng :)
    2019-05-08 17: 03: 46Z
1 Câu trả lời                              1                         

Tôi tin rằng bạn có thể gọi CreateTimerQueueTimer . Điều này sẽ thực hiện gọi lại trong bộ đếm thời gian chỉ một lần và dừng lại. Nếu bạn muốn kích hoạt lại bộ hẹn giờ, bạn có thể _In_ ULONG Period với cùng một tay cầm cung cấp một khoảng thời gian lớn hơn 0 để chạy định kỳ. Cụ thể không có API để tạm dừng bộ hẹn giờ nhưng ngăn nó chạy định kỳ sẽ tương đương trong trường hợp của bạn. Chỉ cần lưu ý rằng cuộc gọi lại của bạn sẽ bị tấn công một lần sau khi gọi _In_opt_ HANDLE TimerQueue trước khi "tạm dừng".

    
5
2019-05-08 16: 19: 46Z
  1. NULL chỉ là trì hoãn việc thực hiện ban đầu. "Thời gian đến hạn [in] Lượng thời gian tính bằng mili giây so với thời gian hiện tại phải trôi qua trước khi bộ định thời được báo hiệu lần đầu tiên." Có thể có trường hợp một người muốn kích hoạt bộ hẹn giờ ngay lập tức sau đó tạm dừng bất kỳ lúc nào trong tương lai.
    2019-05-08 16: 16: 24Z
  2. Cảm ơn rất nhiều !!!. Đó là một cách tiếp cận tốt Tôi nghĩ rằng tôi có thể thêm một cuộc gọi lại trung gian chỉ để tránh gọi lại cuộc gọi của người dùng khi tạm dừng thời gian.
    2019-05-09 06: 46: 43Z
  3. À đúng rồi! Ý kiến ​​hay Tôi đã không cân nhắc sử dụng một cuộc gọi lại khác cho "Tạm dừng".
    2019-05-09 12: 48: 25Z
_Inout_ HANDLE Timer
nguồn đặt đây