예제 #1
0
        /// <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());
                }
            }
        }
예제 #2
0
        /// <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());
                }
            }
        }