- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当您处理“原始”.net 计时器时,您可以传入等待句柄以在 Win32 计时器被销毁后调用,并且您可以假设您的回调不会被调用。 (并且计时器将被 GC 视为“死”)
如何使用 System.Timers.Timer 执行此操作?
1 Câu trả lời
由于 System.Timers.Timer 和 System.Windows.Forms.Timer 都使用 ThreadPool,它没有操作系统计时器的句柄,因此没有处理的 native 计时器资源 - 只是一个已完成的线程。我不确定您是否可以捕获被 ThreadPool 回收的线程,但我可能是错的。
你可以自己动手(我没有测试过这个,在 Dispose 中使用 ManualResetEvent 可能更有用):
void Run()
{
ManualResetEvent resetEvent = new ManualResetEvent(false);
System.Threading.Timer timer = new System.Threading.Timer(delegate { Console.WriteLine("Tick"); });
timer.Dispose(resetEvent);
MyTimer t = new MyTimer();
t.Interval = 1000;
t.Elapsed += delegate { t.Dispose(resetEvent); };
resetEvent.WaitOne();
}
public class MyTimer : System.Timers.Timer
{
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
}
public virtual void Dispose(WaitHandle handle)
{
handle.SafeWaitHandle.Close();
Dispose();
}
}
关于.net - 如何安全地处理 System.Timers.Timer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4277044/
Tôi đang sử dụng bộ đếm thời gian để chạy một sự kiện theo định kỳ ở những khoảng thời gian khá dài (2 phút). Mọi thứ đều hoạt động tốt. Tuy nhiên, tôi muốn sự kiện được kích hoạt ngay khi bộ đếm thời gian được tạo (thay vì phải đợi 2 phút). Lưu ý rằng tôi không thể thực hiện điều này chỉ bằng cách gọi một phương thức, vì nó mất một thời gian để chạy và
Tôi đang kiểm tra một số mã cũ khủng khiếp có chứa các sự kiện Timer và một số mã dài chứa các lệnh gọi DoEvents. Phiên bản đơn giản hơn như sau: Private Sub tmrProcess_Timer()
Tôi đang cố gắng tạo một ứng dụng Windows Forms và muốn triển khai bộ đếm thời gian. public void timerStart() { DateTime bây giờ = DateTime
Tôi đang tạo một lớp mới để làm cho lớp System.Timers.Timer phù hợp hơn với nhu cầu của tôi. Tôi tạo lớp mới của mình như thế này... sử dụng System.Timers; class BtElapsedEv
Gần đây tôi đã kiểm tra một số bộ hẹn giờ khả thi và System.Threading.Timer và System.Timers.Timer có vẻ cần thiết với tôi (vì chúng hỗ trợ nhóm luồng). Tôi đang tạo một trò chơi và tôi dự định sử dụng
Trước tiên tôi xin nói rằng đây không hẳn là vấn đề mà là vấn đề cần giải quyết. Bây giờ tôi đã có giải pháp và mọi thứ đều ổn với tôi. Nhưng tôi muốn biết tại sao lần đầu tiên lại gặp vấn đề. Đây là mã tôi có hiện tại và nó hoạt động đúng như tôi mong đợi:
Trong bài viết này: http://msdn.microsoft.com/en-us/magazine/cc164015.aspx tác giả nêu rằng System.Threading.Timer không an toàn với luồng. Kể từ đó
Bối cảnh: Tôi có một bộ đếm thời gian dùng để theo dõi thời gian đã trôi qua kể từ khi sự kiện serialPort DataReceived được kích hoạt. Tôi đang tạo giải pháp riêng cho việc này thay vì sử dụng sự kiện hết thời gian tích hợp vì tôi đang nhận được luồng dữ liệu liên tục
Tôi đang xem mã Flutter Timer và phương thức cancel(). Khi tôi muốn xóa một bộ đếm thời gian, tôi có thể sử dụng hai dòng sau: timer.cancel(); timer = null; hoặc tôi có thể làm như sau: timer
Tôi đang cố gắng sử dụng bộ đếm thời gian trong C# để chạy một phương thức ở khoảng thời gian năm giây. Tuy nhiên, mã này có vẻ không hoạt động. Tôi không gặp lỗi nào khi chạy nó, nhưng chương trình (tôi đang chạy trong bảng điều khiển) đóng ngay sau IP.timer1.Start(). Tim
Tôi đang cố gắng sử dụng bộ đếm thời gian trong C# để chạy một phương thức ở khoảng thời gian năm giây. Tuy nhiên, mã này có vẻ không hoạt động. Tôi không gặp lỗi nào khi chạy nó, nhưng chương trình (tôi đang chạy trong bảng điều khiển) đóng ngay sau IP.timer1.Start(). Tim
Tôi gặp lỗi: 'Timer' là tham chiếu không rõ ràng giữa 'System.Windows.Forms.Timer' và 'System.Threading'
Trong ứng dụng của mình, tôi phải gửi thông tin nhịp tim định kỳ đến một ứng dụng "anh chị em". Sử dụng System.Timers.Timer/Threading.Timer hoặc sử dụng một luồng với vòng lặp while và Thread.Sleep
Gần đây tôi phải đối mặt với thử thách viết Dịch vụ Windows. Tôi cần yêu cầu URL theo định kỳ và kiểm tra tính khả dụng của nó. Để thực hiện điều này, tôi quyết định khởi tạo bộ đếm thời gian trong OnStart. Phương thức dịch vụ và thực hiện tất cả công việc trong sự kiện timer_Tick.
Có vẻ như các phiên bản System.Timers.Timer duy trì trạng thái sự kiện thông qua một số cơ chế, nhưng các phiên bản System.Threading.Timer thì không. Chương trình mẫu với System.Threading.Time tuần hoàn
Tôi đã tạo một đối tượng goog.Timer (http://closure-library.googlecode.com/svn/docs/class_goog_Timer.html) với lệnh go mới
Khi bạn đang xử lý bộ đếm thời gian .net "thô", bạn có thể truyền vào một xử lý chờ để được gọi sau khi bộ đếm thời gian Win32 bị hủy và bạn có thể cho rằng lệnh gọi lại của bạn sẽ không được gọi. (và bộ đếm thời gian sẽ được coi là "chết" bởi GC) Cách sử dụng System.Timer
Tôi muốn gợi ý tự động hoàn thành deoplete bật lên nhanh hơn, điều này đòi hỏi phải thiết lập g:deoplete#auto_complete_delay. Trợ giúp cho biết điều này đòi hỏi hỗ trợ +timers. Làm thế nào tôi có thể kích hoạt bộ hẹn giờ này trong cấu hình? Cảm ơn!
Tôi đang tự hỏi liệu có cách hợp lý nào để xác định khả năng tải của đối tượng Timers.Timer không? Hay chính xác hơn là chức năng của luồng. Có ai biết có vấn đề gì khi khởi động một số lượng lớn (hàng trăm) luồng bằng lớp Timer không? EDIT: Để làm việc, chúng ta sẽ bắt đầu một số
Tôi đang tạo một WindowsService với một Timer được liên kết với một EventHandler có vòng lặp vô hạn; Tôi muốn có thể kích hoạt timer này một lần trong phương thức OnStart() của dịch vụ, sau đó
Tôi là một lập trình viên xuất sắc, rất giỏi!