private void exportAllTablesToolStripMenuItem_Click(object sender, RoutedEventArgs e) { ExcelWriter writer = new ExcelWriter(); if (MessageBox.Show("Will prepare for export. This may take a while.", "Export Data", MessageBoxButton.OKCancel) == MessageBoxResult.Cancel) { return; } Parallel.ForEach(forms, form => form.SetTables()); writer.BuildHyperlinkSheet(forms.Select(sweet => new Tuple <string, List <DataTable> >((sweet as UserControl).GetType().Name, sweet.DataTables)).ToList()); Parallel.ForEach(forms, form => writer.ExportToExcel(form.DataTables, (form as UserControl).GetType().Name)); if (MessageBox.Show("Finished preparing. Ready to save? This may take a while.", "Export Data", MessageBoxButton.OKCancel) == MessageBoxResult.Cancel) { return; } SaveExcelFile(writer, (current_form as ITabbedMDI).MDIParent.GetType().Name + "_table.xlsx"); //get the window hosting tabcontrol, which hosts usercontrol }