Tôi có một dll tiêu thụ bởi một dịch vụ. Công việc cơ bản của nó là chạy mỗi X phút và thực hiện một số kiểm tra hệ thống. Trong dll của tôi, tôi có một lớp cấp cao nhất tuyên bố một System.threading.timer và một Timercallback. Hàm khởi tạo cho lớp khởi tạo timerCallback với hàm chuỗi của tôi. Trong trình xử lý "Onstart" của tôi, tôi khởi tạo bộ hẹn giờ với timercallback và đặt thời gian tiếp theo để kích hoạt và khoảng thời gian. Trong trường hợp của tôi cứ 10 phút một lần. Thông thường trong các kiểm tra 10 phút này không có gì để làm nhưng dịch vụ buộc phải làm điều gì đó ít nhất một lần mỗi ngày tại một thời điểm nhất định.C# .NET 2 Threading.Timer - time drifting
Vấn đề của tôi: Tôi thấy rằng trong quá trình thử nghiệm, thời gian kiểm tra hàng ngày được thực hiện mỗi ngày là chậm drifitng ra khỏi thời gian bắt đầu mong muốn của 8,30. ví dụ. trong khoảng 20 ngày lẻ, thời gian của tôi đã trôi dạt từ 08.30 đến 08.31.35. Nó trôi dạt khoảng 4 - 6 giây mỗi ngày.
Câu hỏi của tôi: có ai biết lý do tại sao thời gian trôi dạt như thế này và làm cách nào tôi có thể gắn bó với thời gian quy định?
cảm ơn
Tôi không chắc chắn dựa trên câu hỏi này nhưng có vẻ như bạn đang lên lịch hẹn giờ để làm điều gì đó trong 10 phút mà hành động đầu tiên của họ là lên lịch một tác vụ khác trong 10 phút. Không lên lịch một nhiệm vụ cứ 10 phút một lần. Bạn có thể đăng mã bộ đếm thời gian không? – Sign
Tôi chỉ đặt hẹn giờ một lần, khi dịch vụ đầu tiên bắt đầu và tôi đặt nó để kích hoạt sau mỗi 10 phút. Cứ như cứ mỗi 10 phút "đánh dấu" từ đó dần dần trôi đi sau đó và sau đó. Khó khăn để thêm mã beecause tôi cant dường như đặt trả về vận chuyển trong hộp texc này! – Keith
@Keith - Bạn không được giả sử có một cuộc thảo luận đầy đủ theo nhận xét. Nếu bạn có mã để đăng cập nhật câu hỏi của mình. –