public void SaveState(string fileName, uint simulationStep) { try { string dataFolder = Path.GetDirectoryName(fileName) + "\\" + Path.GetFileNameWithoutExtension(fileName) + ".statedata"; MyNetworkState networkState = new MyNetworkState() { ProjectName = Owner.Name, MemoryBlocksLocation = dataFolder, SimulationStep = simulationStep }; YAXSerializer serializer = new YAXSerializer(typeof(MyNetworkState), YAXExceptionHandlingPolicies.ThrowErrorsOnly, YAXExceptionTypes.Warning); serializer.SerializeToFile(networkState, fileName); if (Directory.Exists(dataFolder)) { Directory.Delete(dataFolder, true); } Directory.CreateDirectory(dataFolder); MyMemoryManager.Instance.SaveBlocks(this, true, dataFolder); } catch (Exception e) { MyLog.ERROR.WriteLine("Saving state failed: " + e.Message); } }
private void exportStateButton_Click(object sender, EventArgs e) { if (saveMemFileDialog.ShowDialog(this) == DialogResult.OK) { try { string dataFolder = MyProject.MakeDataFolderFromFileName(saveMemFileDialog.FileName); MyMemoryBlockSerializer.ExportTempStorage(Project, dataFolder); MyNetworkState networkState = new MyNetworkState() { ProjectName = Project.Name, MemoryBlocksLocation = dataFolder, SimulationStep = SimulationHandler.SimulationStep }; YAXSerializer serializer = new YAXSerializer(typeof(MyNetworkState), YAXExceptionHandlingPolicies.ThrowErrorsOnly, YAXExceptionTypes.Warning); serializer.SerializeToFile(networkState, saveMemFileDialog.FileName); MyLog.INFO.WriteLine("Saving state: " + saveMemFileDialog.FileName); } catch (Exception ex) { MyLog.ERROR.WriteLine("Saving state failed: " + ex.Message); } } }
public MyNetworkState LoadState(string fileName) { try { YAXSerializer serializer = new YAXSerializer(typeof(MyNetworkState), YAXExceptionHandlingPolicies.ThrowErrorsOnly, YAXExceptionTypes.Warning); MyNetworkState networkState = (MyNetworkState)serializer.DeserializeFromFile(fileName); if (Owner.Name != networkState.ProjectName) { throw new InvalidDataException("Different network state file: " + networkState.ProjectName); } MyMemoryManager.Instance.LoadBlocks(this, true, networkState.MemoryBlocksLocation); return(networkState); } catch (Exception e) { MyLog.ERROR.WriteLine("Restoring state failed: " + e.Message); return(new MyNetworkState()); } }