2013-08-06 9 views
5

Ich habe Hintergrundaufgabe in meiner App, die alle 15 Minuten (wenn auf Sperrbildschirm) ausgeführt wird. Kann ich feststellen, ob meine App ausgeführt wird, wenn die Hintergrundaufgabe ausgeführt wird? Ich möchte in diesem Fall die Ausführung von Hintergrundaufgaben überspringen, um Nebenläufigkeitsprobleme zu vermeiden.Hintergrundaufgabe und laufende App Erkennung

Antwort

2

Sie können nicht feststellen, ob Ihre App von einer Hintergrundaufgabe ausgeführt wird, aber Sie können mithilfe der Ereignisse BackgroundTaskRegistration Progress und Completed feststellen, wann die Hintergrundaufgabe von Ihrer App ausgeführt wird.

Dieses Beispiel deckt alles ab, was Sie benötigen. http://code.msdn.microsoft.com/windowsapps/Background-Task-Sample-9209ade9

+0

Dieser Link sagt mir: "Dieser Artikel ist noch nicht veröffentlicht. Wenn Sie der Besitzer dieses Projekts sind, melden Sie sich mit dem entsprechenden Konto." –

+1

Es scheint, Microsoft hat alte Proben entfernt, ich habe den Link mit aktualisiert ein Windows 8.1-Beispiel – Tim

1

Da sowohl die App und die Hintergrundaufgabe Zugriff auf App-Daten haben, haben den APP-Speicher einen Flag in ApplicationData.localSettings, wenn es aktiviert ist, das Löschen des Flag, wenn es aufgehängt ist, und Rücksetzen des Flags, wenn sie wieder aufgenommen wird. Die Hintergrund-Task kann dann dieses Flag beim Start prüfen und von dort die Entscheidung treffen.

+2

Ja, klingt wie nur Lösung, aber was passiert, wenn App unerwartet beendet wird? –

0

Haben Sie einen gemeinsamen Mutex in Betracht gezogen? Dies würde vor schrecklichen Situationen schützen, in denen (zum Beispiel) die Hintergrund-Aufgabe fehlschlägt und ihre aktive Flagge nicht löscht oder die lokalen Einstellungen beschädigt werden.