Tôi muốn lặp lại một chức năng từ thời điểm chương trình mở cho đến khi nó đóng lại sau mỗi vài giây. Điều gì sẽ là cách tốt nhất để làm điều này trong C#?Lặp lại chức năng vài giây một lần
Trả lời
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.
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.
MSDN Magazine liên kết là chết. –
Cảm ơn. Đã cập nhật liên kết. –
Đố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
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
- 1. Làm thế nào để lặp lại hình nền css với Jquery vài giây một lần?
- 2. Tìm các lần lặp lại với chức năng xếp hạng
- 3. Chức năng Javascript để tải lại trang mỗi X giây?
- 4. làm thế nào để bỏ qua một vài lần lặp trong một vòng lặp trong Ruby?
- 5. setInterval() chỉ chạy chức năng một lần
- 6. Lặp lại data.frame N lần
- 7. Chức năng được gọi nhiều lần trong AngularJS Lặp lại mục
- 8. Chức năng đo MFC theo mili giây
- 9. cách thực hiện vòng lặp n lần trong 1 giây
- 10. Jquery - thực hiện một hành động mỗi vài giây
- 11. Làm thế nào để kích hoạt một chức năng một lần, và chỉ một lần ...?
- 12. TIMEZONE_CHANGED ý định được nhận vài giây
- 13. chênh giờ chỉ trong vài giây
- 14. python bản đồ chức năng lặp
- 15. Tên Python có thể lặp lại có thể được lặp lại nhiều lần
- 16. Chức năng C++ liên kết các đối số lặp lại với hàm curried
- 17. Lấy số lần một mục được lặp lại trong C#
- 18. Cách nhận tổng số lần lặp lại trong một foreach
- 19. lặp lại hình nền css một tập hợp số lần
- 20. Một chức năng gọi lại mỗi lần nhấn một phím (bất kể cửa sổ nào có tiêu điểm)?
- 21. Số lần lặp lại trong python?
- 22. CAAnimation -1 số lần lặp lại?
- 23. Tài liệu Python: có thể lặp lại nhiều lần?
- 24. Emacs chuỗi lặp lại n lần
- 25. Biểu đồ lặp lại nhiều lần
- 26. cách hiệu quả của việc có một chức năng chỉ thực hiện một lần trong một vòng lặp
- 27. Mẫu Django cho vòng lặp - Lặp lại lần cuối
- 28. Một giải pháp khả thi cho việc lặp lại chức năng
- 29. Thực hiện chức năng được chỉ định mỗi X giây
- 30. Tính thời gian chức năng tính bằng nano giây trong mã C
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ụ. –
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. –
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. –