Ausführen einer Funktion in regelmäßigen Abständen, nachdem die Funktion ihre Aufgabe abgeschlossen hat
Ich baue eine Windows Store App mit C # und xaml. Ich muss die Daten nach einem bestimmten Zeitraum aktualisieren (bringen Sie die neuen Daten vom Server). Ich habe ThreadPoolTimer verwendet, um meine Aktualisierungsfunktion in regelmäßigen Abständen wie folgt auszuführen:
TimeSpan period = TimeSpan.FromMinutes(15);
ThreadPoolTimer PeriodicTimer = ThreadPoolTimer.CreatePeriodicTimer(async(source)=> {
n++;
Debug.WriteLine("hello" + n);
await dp.RefreshAsync(); //Function to refresh the data
await Dispatcher.RunAsync(CoreDispatcherPriority.High,
() =>
{
bv.Text = "timer thread" + n;
});
}, period);
Das funktioniert einwandfrei. Das einzige Problem besteht darin, dass die Aktualisierung erst abgeschlossen wird, wenn die nächste Instanz an den Thread-Pool übergeben wird. Gibt es eine Möglichkeit, die Lücke zwischen seiner Ausführung anzugeben.
Schritt 1: Aktualisierungsfunktion wird ausgeführt (dauert beliebig lange)
Schritt 2: Die Aktualisierungsfunktion schließt die Ausführung ab
Schritt 3: Pause für 15 Minuten, dann weiter mit Schritt 1
Refresh-Funktion wird ausgeführt. 15 Minuten nach Beendigung der Ausführung wird sie erneut ausgeführt.