// This is an Async method protected virtual void GetExam(BackgroundWorker worker) { Exam exam = ObjectCreator.CreateExam(this.examTitle, this.examDescription, 300); foreach (SectionBaseInfo info in this.sectionInfoCollection) { if (info.QuestionCount == 0) { continue; } exam.SectionCollection.Add(this.CreateSection(info, worker)); } worker.ReportProgress(100, exam); }