2012-07-02 39 views

Trả lời

69

Sử dụng hẹn giờ. Có 3 loại cơ bản, mỗi loại đều phù hợp cho các mục đích khác nhau.

Chỉ sử dụng ở một ứng dụng Windows Form. Bộ hẹn giờ này được xử lý như là một phần của vòng lặp tin nhắn, do đó bộ hẹn giờ có thể bị đóng băng dưới tải cao.

Khi bạn cần đồng bộ, sử dụng thế này. Điều này có nghĩa là sự kiện đánh dấu sẽ được chạy trên luồng khởi động bộ hẹn giờ, cho phép bạn thực hiện các thao tác GUI mà không gặp rắc rối nhiều.

Đây là giờ cao-powered nhất, mà cháy bọ ve trên một sợi nền. Điều này cho phép bạn thực hiện các thao tác trong nền mà không làm đóng băng GUI hoặc chuỗi chính.

Đối với hầu hết các trường hợp, tôi khuyên bạn nên System.Timers.Timer.

+4

Chỉ cần một sự bổ sung - thực ra không chỉ có điều này - ví dụ, có 'DispatcherTimer' (WPF/Silverlight), cũng như các bộ đếm thời gian khác như các công cụ. –

+4

Cũng lưu ý rằng sự kiện đã trôi qua của System.Timers.Timer kích hoạt trên luồng giao diện người dùng nếu bạn đặt SynchronizingObject nếu không nó sẽ kích hoạt trên luồng ThreadPool. –

+0

Một điều cần lưu ý là nếu bạn muốn độ tin cậy không ai trong số này làm việc 100% thời gian, đặc biệt là trên các hệ thống chịu tải nặng. –

11

Sử dụng số timer. Hãy nhớ rằng .NET đi kèm với một số bộ đếm thời gian khác nhau. This article bao gồm sự khác biệt.

+0

MSDN Magazine liên kết là chết. –

+0

Cảm ơn. Đã cập nhật liên kết. –

36

Đối với điều này các System.Timers.Timer hoạt động tốt nhất

// Create a timer 
myTimer = new System.Timers.Timer(); 
// Tell the timer what to do when it elapses 
myTimer.Elapsed += new ElapsedEventHandler(myEvent); 
// Set it to go off every five seconds 
myTimer.Interval = 5000; 
// And start it   
myTimer.Enabled = true; 

// Implement a call with the right signature for events going off 
private void myEvent(object source, ElapsedEventArgs e) { } 

Xem Timer Class (.NET 4.6 and 4.5) để biết chi tiết

+3

Vì lợi ích của những người tìm kiếm đang tìm kiếm bảng điều khiển sao chép và dán nhanh, tôi đã sử dụng ví dụ @IvoTops và tạo một mẫu ở đây -> https://gist.github.com/HockeyJustin/1161699bd26adb5c054d. – HockeyJ

Các vấn đề liên quan