// this prepares the workspace for serialization to disk public void Pack(string filename) { this.locationOnDisk = filename; filenames = new List <string>(); using (MemoryStream ms = new MemoryStream()) { template.Save(ms); templateBytes = ms.GetBuffer(); ms.Close(); } if (answers != null) { using (MemoryStream ms = new MemoryStream()) { answers.Save(ms); answerBytes = ms.GetBuffer(); ms.Close(); } } using (MemoryStream ms = new MemoryStream()) { BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(ms, myImages); filepathDictionaryBytes = ms.GetBuffer(); ms.Close(); } reviewRequiredStatus = new bool[results.Count][][][]; resultsBytes = new byte[results.Count][]; for (int i = 0; i < results.Count; i++) { IRecognitionForm frm = results[i]; reviewRequiredStatus[i] = new bool[frm.Pages.Count][][]; for (int j = 0; j < frm.Pages.Count; j++) { reviewRequiredStatus[i][j] = new bool[frm.Pages[j].Fields.Count][]; for (int k = 0; k < frm.Pages[j].Fields.Count; k++) { if (frm.Pages[j].Fields[k] is OmrField) { reviewRequiredStatus[i][j][k] = ((OmrField)frm.Pages[j].Fields[k]).Fields.ConvertAll <bool>(delegate(OmrCollection oc) { ReviewParameters rp = oc.Tag as ReviewParameters; return(rp != null ? rp.ReviewRequired : false); }).ToArray(); } } } using (MemoryStream ms = new MemoryStream()) { frm.Save(ms); resultsBytes[i] = ms.GetBuffer(); ms.Close(); } } }