Gibt es einen einfachen Weg, um eine Methode nach einer bestimmten Verzögerung wie in iOS out of the box durchzuführen?
Auf dem iPhone würde ich das tun:
[self performSelector:@selector(connectSensor) withObject:nil afterDelay:2.5];
Er plant dann die Methode connectSensor
im Haupt-Thread (UI-Thread), die nach 2,5 Sekunden ausgeführt wird. Und weil es automatisch im Hauptthread eingeplant wird, müssen Sie sich nicht um Probleme mit Kreuzthreads kümmern. (Es gibt auch eine performSelectorOnBackground
version)
Wie würde ich das in WP7 richtig machen?
Momentan beende ich dies mit einem Timer, aber ich bin mir nicht sicher, ob das eine gute Lösung ist.
%Vor% Wie könnte dies in eine Erweiterungsmethode eingekapselt werden, so dass ich einfach this.Perform(MyMethod, null, 2500);
?
Sie können einen BackgroundWorker wie folgt verwenden:
%Vor%Der Aufruf dieser Methode würde folgendermaßen aussehen:
%Vor%Der Hintergrund-Worker führt den Ruhezustand in einem Thread aus dem Benutzeroberflächenthread aus, sodass Ihre Anwendung während der Verzögerung andere Aufgaben ausführen kann.
Sie können die Reaktive Erweiterungen für WP7 verwenden, um auf einem Timer zu beobachten:
%Vor%
Angesichts der Kürze dieses Codes glaube ich nicht, dass Sie viel gewinnen würden, indem Sie eine Erweiterungsmethode dafür erstellen :) Weitere Informationen zu den Reaktiven Erweiterungen für WP7 finden Sie in diesem MSDN-Seite .
Tags und Links thread-safety timer windows-phone-7 backgroundworker