3.0 preview
Ask or search…

Saving and Restoring app state

Application state is very simple to save by serializing the model into app.Properties. For example, you can store as JSON as follows using Json.NET:
type Application() =
let modelId = "model"
override __.OnSleep() =
let json = Newtonsoft.Json.JsonConvert.SerializeObject(runner.CurrentModel)
Debug.WriteLine("OnSleep: saving model into app.Properties, json = {0}", json)
app.Properties.[modelId] <- json
override __.OnResume() =
Debug.WriteLine "OnResume: checking for model in app.Properties"
match app.Properties.TryGetValue modelId with
| true, (:? string as json) ->
Debug.WriteLine("OnResume: restoring model from app.Properties, json = {0}", json)
let model = Newtonsoft.Json.JsonConvert.DeserializeObject<App.Model>(json)
Debug.WriteLine("OnResume: restoring model from app.Properties, model = {0}", (sprintf "%0A" model))
runner.SetCurrentModel (model, Cmd.none)
| _ -> ()
with ex ->
App.program.onError("Error while restoring model found in app.Properties", ex)
override this.OnStart() =
Debug.WriteLine "OnStart: using same logic as OnResume()"