Tôi đang cố gắng xây dựng lại một ứng dụng nhịp cũ đã được viết bằng MFC trong C++ được viết bằng .NET bằng C#. Một trong những vấn đề tôi đang gặp phải là nhận được bộ đếm thời gian để "đánh dấu" đủ chính xác.Nhận các dấu chính xác từ bộ đếm thời gian trong C#
Ví dụ: giả sử BPM dễ dàng (nhịp mỗi phút) là 120, bộ hẹn giờ sẽ đánh dấu mỗi giây là 0,5 giây (hoặc 500 mili giây). Sử dụng điều này làm cơ sở cho các ve, tuy nhiên, không hoàn toàn chính xác như .NET chỉ đảm bảo rằng bộ hẹn giờ của bạn sẽ không đánh dấu trước khi thời gian trôi qua trôi qua.
Hiện tại, để thực hiện việc này cho cùng một ví dụ 120 BPM được sử dụng ở trên, tôi đặt các dấu tích cho khoảng 100 mili giây và chỉ phát âm thanh nhấp vào mỗi lần đếm thứ 5. Điều này cải thiện độ chính xác khá nhiều, nhưng nếu cảm thấy như một chút của một hack.
Vì vậy, cách tốt nhất để có được bọ ve chính xác là gì? Tôi biết có nhiều bộ tính giờ có sẵn hơn so với các cửa sổ hình thức bộ đếm thời gian đó là có sẵn trong Visual Studio, nhưng tôi không thực sự quen thuộc với họ.
Nhưng sau đó bạn chỉ có thể chắc chắn rằng thread ngủ ít nhất x millioseconds; bộ lập lịch trình không xác nhận rằng luồng sẽ chạy với số millesond chính xác – Wilhelm
Đúng. Tôi đồng ý với những gì bạn nói về việc không thể xác định thời điểm đánh dấu tiếp theo. Điểm của những gì tôi nói là bạn không muốn thực hiện mã sự kiện đánh dấu từ một đánh dấu trước đó khi đánh dấu tiếp theo của bạn xảy ra. –