Statt manuell mit einem DispatcherTimer Hantieren Ich kam auf diese:while (true) + Task.Delay() innerhalb der asynchronen Void-Methode; sollte ich Schwierigkeiten erwarten?
public async void StartWatching()
{
Debug.Assert(SynchronizationContext.Current is DispatcherSynchronizationContext, "SynchronizationContext.Current is DispatcherSynchronizationContext");
while (true)
{
this.GC0 = GC.CollectionCount(0);
this.GC1 = GC.CollectionCount(1);
this.GC2 = GC.CollectionCount(2);
this.RAM = GC.GetTotalMemory(false);
await Task.Delay(1500);
}
}
Dieser Code nicht über Garbage Collection ist, sondern nur zeigen Statistiken über eine Statusleiste angezeigt.
Dies wird einmal gestartet (von innerhalb Application.OnStartup
) und soll für die gesamte Laufzeit der Anwendung ausgeführt werden.
Einzel Frage
Wird mir dies in jede Art von Schwierigkeiten geraten, wenn langfristige (Wochen) läuft?
Warum * müssen * Sie die Garbage Collection manuell initiieren? –
@MikeEason Ich zeige nur Statistiken über eine Statusleiste. – springy76
Wo ist das Problem mit einem Timer? Dies ist der Anwendungsfall für Timer, warum brauchen Sie eine Alternative? – JeffRSon