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:
typeApplication()=....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]<- jsonoverride __.OnResume()= Debug.WriteLine "OnResume: checking for model in app.Properties"trymatch 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()" this.OnResume()