@Sean Chambers
Zur Information: Die .NET Timer-Klasse ist nicht für Diagnosezwecke gedacht, sie generiert Ereignisse in einem voreingestellten Intervall, wie hier beschrieben (MSDN):
System.Timers.Timer aTimer;
public static void Main()
{
// Erstellen eines Timers mit einem Intervall von zehn Sekunden.
aTimer = new System.Timers.Timer(10000);
// Verknüpfen des Elapsed-Ereignisses für den Timer.
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
// Setzen des Intervalls auf 2 Sekunden (2000 Millisekunden).
aTimer.Interval = 2000;
aTimer.Enabled = true;
Console.WriteLine("Drücken Sie die Eingabetaste, um das Programm zu beenden.");
Console.ReadLine();
}
// Definieren des Verhaltens beim Auftreten des Elapsed-Ereignisses.
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
Console.WriteLine("Das Elapsed-Ereignis wurde ausgelöst um {0}", e.SignalTime);
}
Daher hilft dies nicht dabei zu wissen, wie lange etwas gedauert hat, sondern nur dass eine bestimmte Zeit vergangen ist.
Der Timer ist auch als Steuerelement in System.Windows.Forms verfügbar... Sie finden ihn in Ihrer Designer-Toolbox in VS05/VS08
0 Stimmen
Übrigens, wenn Sie nicht auf der Suche nach etwas Schnellem und Dreckigem sind, können Leistungsindikatoren verwendet werden.
1 Stimmen
Wenn Sie eine größere Genauigkeit benötigen, verwenden Sie Stopwatch.GetTimestamp, ansonsten ist die Antwort gut.
0 Stimmen
@dbasnett Können Sie in einer Antwort mehr ins Detail gehen?
0 Stimmen
Im obigen Beispiel ändern Sie start und endtime in long und weisen Sie ihnen statt DateTime.Now Stopwatch.GetTimestamp zu. Die benötigte Zeit beträgt (end-start)/Stopwatch.Frequency.
0 Stimmen
Siehe auch: Der Fall gegen DateTime.Now
0 Stimmen
Jedes Mal, wenn Sie DateTime.Now verwenden würden, fragen Sie sich, ob Sie nicht stattdessen DateTime.UtcNow verwenden sollten. Das gesagt, ist Stopwatch die richtige Lösung.
2 Stimmen
"Best" ist subjektiv. Diese Frage muss auf objektive Weise definieren, was mit "best" gemeint ist.