/// <summary> /// Handles the DoWorker event for the file I/O worker /// </summary> /// <param name="sender">Object that fired the event</param> /// <param name="e">.NET supplied event parameters</param> private void fileIOWorker_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) { lock (syncLock) { System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch(); stopWatch.Start(); try { string fileName = (string)e.Argument; SetGadgetStatusHandler requestUpdateStatus = new SetGadgetStatusHandler(RequestUpdateStatusMessage); CheckForCancellationHandler checkForCancellation = new CheckForCancellationHandler(IsCancelled); if (File.Exists(fileName)) { File.Delete(fileName); } dashboardHelper.PopulateDataSet(); // the only reason to call this is to see if any new user-defined vars have been added and apply them. List<Epi.Data.TableColumn> tcList = dashboardHelper.GetFieldsAsListOfEpiTableColumns(useTabOrder); DataView dv = dashboardHelper.DataSet.Tables[0].DefaultView; if (!allFieldsSelected) { List<Epi.Data.TableColumn> tcFilteredList = new List<Epi.Data.TableColumn>(); foreach (string columnName in exportFields) { foreach (Epi.Data.TableColumn tc in tcList) { if (tc.Name.Equals(columnName) && !tcFilteredList.Contains(tc)) { tcFilteredList.Add(tc); } } } tcList = tcFilteredList; } Epi.ImportExport.CSVExporter csvExporter = new Epi.ImportExport.CSVExporter( dv, tcList, fileName); if (this.useTabOrder) { csvExporter.ColumnSortOrder = Epi.ImportExport.ColumnSortOrder.TabOrder; } else { csvExporter.ColumnSortOrder = Epi.ImportExport.ColumnSortOrder.None; } csvExporter.SetProgressBar += new SetProgressBarDelegate(CallbackIncrementProgressBar); csvExporter.SetStatus += new UpdateStatusEventHandler(CallbackSetStatusMessage); csvExporter.SetProgressAndStatus += new SetProgressAndStatusHandler(RequestUpdateStatusMessage); csvExporter.CheckForCancellation += new CheckForCancellationHandler(IsCancelled); if (dashboardHelper.IsUsingEpiProject) { csvExporter.AttachView(dashboardHelper.View); } csvExporter.Export(); } catch (Exception ex) { this.Dispatcher.BeginInvoke(new SetStatusDelegate(SetErrorMessage), ex.Message); } finally { stopWatch.Stop(); System.Diagnostics.Debug.Print("File I/O Export thread finished in " + stopWatch.Elapsed.ToString()); } } }
/// <summary> /// Handles the DoWorker event for the file I/O worker /// </summary> /// <param name="sender">Object that fired the event</param> /// <param name="e">.NET supplied event parameters</param> private void fileIOWorker_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) { lock (syncLock) { System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch(); stopWatch.Start(); try { string fileName = (string)e.Argument; SetGadgetStatusHandler requestUpdateStatus = new SetGadgetStatusHandler(RequestUpdateStatusMessage); CheckForCancellationHandler checkForCancellation = new CheckForCancellationHandler(IsCancelled); if (File.Exists(fileName)) { File.Delete(fileName); } dashboardHelper.PopulateDataSet(); // the only reason to call this is to see if any new user-defined vars have been added and apply them. List <Epi.Data.TableColumn> tcList = dashboardHelper.GetFieldsAsListOfEpiTableColumns(useTabOrder); DataView dv = dashboardHelper.DataSet.Tables[0].DefaultView; if (!allFieldsSelected) { List <Epi.Data.TableColumn> tcFilteredList = new List <Epi.Data.TableColumn>(); foreach (string columnName in exportFields) { foreach (Epi.Data.TableColumn tc in tcList) { if (tc.Name.Equals(columnName) && !tcFilteredList.Contains(tc)) { tcFilteredList.Add(tc); } } } tcList = tcFilteredList; } Epi.ImportExport.CSVExporter csvExporter = new Epi.ImportExport.CSVExporter( dv, tcList, fileName); if (this.useTabOrder) { csvExporter.ColumnSortOrder = Epi.ImportExport.ColumnSortOrder.TabOrder; } else { csvExporter.ColumnSortOrder = Epi.ImportExport.ColumnSortOrder.None; } csvExporter.SetProgressBar += new SetProgressBarDelegate(CallbackIncrementProgressBar); csvExporter.SetStatus += new UpdateStatusEventHandler(CallbackSetStatusMessage); csvExporter.SetProgressAndStatus += new SetProgressAndStatusHandler(RequestUpdateStatusMessage); csvExporter.CheckForCancellation += new CheckForCancellationHandler(IsCancelled); if (dashboardHelper.IsUsingEpiProject) { csvExporter.AttachView(dashboardHelper.View); } csvExporter.Export(); } catch (Exception ex) { this.Dispatcher.BeginInvoke(new SetStatusDelegate(SetErrorMessage), ex.Message); } finally { stopWatch.Stop(); System.Diagnostics.Debug.Print("File I/O Export thread finished in " + stopWatch.Elapsed.ToString()); } } }