Tôi hiện đang sử dụng System.Threading.Timer trên khoảng thời gian 10 giây. Tôi đã thêm một đoạn mã nhỏ để ghi vào một tệp mỗi khi bộ hẹn giờ kích hoạt, và trong khi hầu hết thời gian nó cháy vào thời gian, đôi khi (có lẽ khi phần còn lại của ứng dụng được mua), không thể kích hoạt được 30 hoặc 40 giây, và cháy liên tục và nhanh chóng.Hẹn giờ đáng tin cậy hơn System.Threading.Timer
Có bộ hẹn giờ đáng tin cậy hơn tôi có thể sử dụng trong .NET 3.5 không?
Các bộ đếm thời gian được thiết lập như sau
Timer someTimer = new Timer(new TimerCallback(SomeMethod), null, 0, 10000);
... và gọi lại là:
private static void SomeMethod(object state)
Tuy nhiên, rất khó để cung cấp mã nhiều hơn này, như Timer thường bắn một cách chính xác . Khi nó được nhúng vào trong một ứng dụng khổng lồ (~ 100.000 dòng hoặc hơn), với các chủ đề mulitple được bắn ra, trái, phải và trung tâm, bạn từ từ bắt đầu thấy bộ đếm thời gian bắn liên tục. Tôi đã nhìn thấy một số bài đăng gợi ý rằng ThreadPool có thể bị cạn kiệt, vì vậy tôi hiện đang tìm kiếm xem đây có phải là những gì tôi đang trải nghiệm hay không.
Bạn có thể cung cấp một số mã mẫu thay vì * giả định * bộ hẹn giờ không đáng tin cậy không? Tôi có xu hướng tìm thấy đó là mã của riêng tôi, đó là vấn đề chứ không phải .NET Frameworks '. –
Bộ hẹn giờ được thiết lập như sau: – JamesPD
Sự kiện đói trong hồ bơi sẽ rất có thể xảy ra nếu quá trình xử lý đánh dấu mất quá 10 giây. Bạn sẽ từ từ nhận được một backlog của các mặt hàng. Các chiến thuật tiêu chuẩn là để ngăn chặn các bộ đếm thời gian vào mục để một sự kiện đánh dấu và bắt đầu lại một lần nữa ở cuối để không có "hẹn giờ bị rò rỉ" do thời gian xử lý lâu dài. –