Compact Framework - stoppt System.Threading.Timer, wenn der Benutzer schaltet den Bildschirm

StackOverflow https://stackoverflow.com/questions/284300

Frage

Ich habe eine Anwendung, die auf „Umfrage“ eine Webservice muss sehen, ob der Benutzer neue Nachrichten hat warten. Ich habe keine Kontrolle über den Webservice, so kann ich nicht auf einen „Push“ Mechanismus wechseln, ich bin jede X Anzahl von Sekunden einer Anfrage fest zu machen, um zu sehen, was verfügbar ist.

Ich bin mit einem System.Threading.Timer, um die Anforderung zu machen alle so oft, aber ein paar Probleme am stoßen. Der größte ist, dass es nicht mehr läuft, wenn das Telefon in den „Standby“ -Modus gesendet wird (Bildschirm ausgeschaltet, aber noch in der Lage Anrufe und E-Mail / txt-Benachrichtigungen zu erhalten).

Ich würde wirklich, wie es wie andere Anwendungen im Hintergrund zu verhalten. Was kann ich tun, um es ohne zu machen arbeiten zu groß für eine Belastung für die Batterie?

War es hilfreich?

Lösung

Hass auf meine eigene Frage zu beantworten, aber ich wurde auf diese , die selbst war in der Lage zu führen, wenn das Gerät schläft. Sieht aus wie es perfekt funktioniert.

Andere Tipps

Es gibt nichts, was man tun kann, AFAIK. Standby-Modus sollte den Prozessor zu unterbrechen um Energie zu sparen, und es gibt keinen Weg, um Ihren Code ausführen kann, wenn der Prozessor nicht ausgeführt wird. Es gibt Dinge, die Ihre Anwendung tun können das Gerät zu verhindern, gehen in den Standby-Modus, aber das ist wirklich nicht ratsam, überhaupt nicht.

Ja. Ähnlich wie MusiGenesis geantwortet hat, werden Sie nicht in der Lage sein, viel zu tun, ohne das Gerät nach oben zu halten und läuft. Ähnlich wie einige Telefone benachrichtigt, dass „Game / App Running“ und damit Ihre Batterie geohrfeigt wird um.

Was ist eine Schnittstelle von Ihrem Telefon Schreiben von Textnachrichten (die immer noch funktioniert) zu nutzen und erhalten eine Textnachricht an den Web-Service zu schicken? ist das möglich? Ich bin diese Art von Verfahren zu raten auch laufen könnte aufhören, aber ich glaube, es ist ein Gedanke?

Ich bin mir nicht sicher kompakten Rahmen, aber in Win32 gibt es WaitableTimer, dass Computer aus dem Standby aufwachen kann. Es dauert einige einheimischen Anrufe obwohl, da es kein Wrapper in .NET.

Obwohl Sie den Webservice nicht ändern können, können Sie in der Lage sein, ein zweites „Schatten“ webservice zwischen Ihren Kunden und dem ursprünglichen webservice hinzuzufügen. Der Schatten webservice die ursprüngliche webservice abfragen könnte und dann „Push“ alles, was es findet heraus, auf die PDAs.

Ich glaube, Sie könnten immer noch das gleiche Problem haben, though. Ich habe noch nie „Push“ von einem Webservice getan, aber ich denke, es ist im Grunde, indem die Client implementiert ist zu einer Webservice-Methode einen anfänglichen Anruf, der einen an eine Methode in dem Client erfolgt, die die WebService dann auf hängt. Wenn der Webservice etwas zu drücken braucht, ruft er diese Delegaten. Wenn der Client in der Standby-Modus in der Zwischenzeit gegangen ist, der Versuch, ruft die Delegierten vom Server fehl.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top