private void bgw_LoadPatient(object source, DoWorkEventArgs e) { PatientMenu match; bool isOpen = false; Patient myPatient = patientList.ElementAt(index); bgw.ReportProgress(10); foreach (Form f in Application.OpenForms) { if (f is PatientMenu) { match = (PatientMenu)f; if (match.patient.patientId == myPatient.patientId) { isOpen = true; SetText("Already Loaded!"); bgw.Dispose(); bgw.ReportProgress(100); break; } } } bgw.ReportProgress(30); if (!isOpen) { //Note: Thread.Sleep is only used to demonstrate that GUI // remains responsive during "Loading". loading = true; p_menu = new PatientMenu(); p_menu.patient = myPatient; p_menu.Text = "Patient ID: " + myPatient.patientId; Thread.Sleep(1000); bgw.ReportProgress(40); Thread.Sleep(1000); bgw.ReportProgress(50); Thread.Sleep(1000); bgw.ReportProgress(80); Thread.Sleep(1000); SetText("Load Patient"); bgw.ReportProgress(100); p_menu.ShowDialog(); } }