Der integrierte Timer bietet nicht die verbleibende Zeit bis zum Ablauf. Sie müssen Ihre eigene Klasse erstellen, die einen Timer umschließt und diese Informationen verfügbar macht.
So etwas sollte funktionieren.
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();
}
}
Über den Anruf hinaus, aber überprüft Sie für Ihre Bemühungen. Danke du bist sehr lieb. Ich habe bereits eine Methode, die berechnet, wie viel Zeit übrig bleiben sollte, aber wollte es mit der Ausgabe vom eigentlichen Timer-Objekt selbst bestätigen. Zu schlecht ist es nicht von Natur aus vorgesehen. –
+1 Danke für diesen nützlichen Code, Sam! – BillW
Ja, er hat das auch schnell geschrieben. Beeindruckend. –