2009-06-29 2 views
1

Ich entwickle eine mobile Anwendung in C# mit .NET Compact Framework 3.5. Der Status muss im Speicher gespeichert werden, d. H. Wenn die Anwendung abstürzt, muss die Anwendung vor dem Absturz in den Status neu gestartet werden.Wie speichert man den mobilen Status einer Anwendung im Speicher?

Alle Geschäftslogik muss auch gespeichert werden, ebenso wie die Formulare. Ich würde gerne wissen, ob es eine einfache Möglichkeit gibt, eine solche Funktion zu verwalten, haben Sie irgendwelche Hinweise? Ist Serialisierung das Richtige?

Danke.

+1

Wird die Anwendung nicht erneut abstürzen, wenn Sie den Status * same * wiederherstellen? Und wenn Sie einen früheren sauberen Zustand meinen, sollten Sie sich nicht eine Transaktionsdatenbank ansehen? – reto

+0

Gute Frage! Tatsächlich tritt das Problem hauptsächlich dann auf, wenn der Benutzer die Anwendung manuell herunterfährt (indem er beispielsweise die Batterie wegnimmt). Ich denke, die Transaktionsdatenbank wäre für diese Anwendung ein Overkill. – OutOfBound

Antwort

1

Zuerst sollten Sie den Zustand nicht im RAM speichern, da er nach einem Absturz verloren geht. Stattdessen müssen Sie einen nicht flüchtigen Speicher wie einen Speicherabsturz verwenden. Schreiben auf diese Art von Medium ist langsam, also müssen Sie entsprechend handeln.

Ich habe einige Geräte gesehen, die eine Wiederherstellungsanwendung hatten, die so konfiguriert werden kann, dass sie den gesamten Inhalt von RAM zu jeder Zeit in Flash dupliziert. Nach einem Hard-Reset könnte das ganze Gerät dorthin gebracht werden, wo es war (zumindest kurz vor der letzten Verdoppelung des RAM).

Vielleicht ist diese Art von Sache ein Overkill für Sie. Es könnte einfacher sein, wie Sie gesagt haben, alle Ihre Objekte zu serialisieren und sie regelmäßig in Flash zu kopieren. Es liegt in Ihrer Verantwortung, was dupliziert und was nicht. Es liegt ebenfalls in Ihrer Verantwortung, die Anwendung in ihrem vorherigen Zustand zu initialisieren.