Bộ hẹn giờ tích hợp không cung cấp thời gian còn lại cho đến khi trôi qua. Bạn sẽ cần phải tạo lớp của riêng bạn, bao gồm một bộ hẹn giờ và hiển thị thông tin này.
Điều gì đó như thế này sẽ hoạt động.
public class TimerPlus : IDisposable
{
private readonly TimerCallback _realCallback;
private readonly Timer _timer;
private TimeSpan _period;
private DateTime _next;
public TimerPlus(TimerCallback callback, object state, TimeSpan dueTime, TimeSpan period)
{
_timer = new Timer(Callback, state, dueTime, period);
_realCallback = callback;
_period = period;
_next = DateTime.Now.Add(dueTime);
}
private void Callback(object state)
{
_next = DateTime.Now.Add(_period);
_realCallback(state);
}
public TimeSpan Period
{
get
{
return _period;
}
}
public DateTime Next
{
get
{
return _next;
}
}
public TimeSpan DueTime
{
get
{
return _next - DateTime.Now;
}
}
public bool Change(TimeSpan dueTime, TimeSpan period)
{
_period = period;
_next = DateTime.Now.Add(dueTime);
return _timer.Change(dueTime, period);
}
public void Dispose()
{
_timer.Dispose();
}
}
Nguồn
2010-02-17 05:35:11
Trên và ngoài cuộc gọi, nhưng đã kiểm tra bạn vì nỗ lực của bạn. Cám ơn. Bạn thật tốt bụng. Tôi đã có một phương pháp mà sẽ tính toán bao nhiêu thời gian nên được còn lại, nhưng muốn xác nhận nó với đầu ra từ các đối tượng bộ đếm thời gian thực tế chính nó. Để xấu nó không phải là vốn đã được cung cấp. –
+1 Cảm ơn mã hữu ích này, Sam! – BillW
Vâng, anh ấy cũng viết nhanh như vậy. Ấn tượng. –