public override void ReadData(Reader reader) { //Clear out any current jobs. while (normalJobs.Count > 0) { Cancel(normalJobs.First()); } while (emergencyJobs.Count > 0) { Cancel(emergencyJobs.First()); } //Stop JobQueries from doing stuff until after deserialization is done. JobQueries.Dispose(); base.ReadData(reader); reader.Collection("normalJobs", (MyData.Reader rd, ref Job outval, string name) => { outval = Job.Read(rd, name, TheMap); }, (i) => normalJobs); reader.Collection("emergencyJobs", (MyData.Reader rd, ref Job outVal, string name) => { outVal = Job.Read(rd, name, TheMap); }, (i) => emergencyJobs); foreach (Job j in normalJobs.Concat(emergencyJobs)) { InitJob(j); } }