Beispiel #1
0
        private void btnOK_Click(object sender, RoutedEventArgs e)
        {
            if (_project == null)
            {
                MessageBox.Show("No project is selected. Please try again.");
            }

            this.Cursor = Cursors.Wait;

            string guid = Guid.NewGuid().ToString();

            Project newProject = ContactTracing.ImportExport.ImportExportHelper.CreateNewOutbreak("Sierra Leone",
                                                                                                  "en-US", @"Projects\VHF\vhf_" + _project.OutbreakName + "_" + guid + ".prj",
                                                                                                  @"Projects\VHF\vhf_" + _project.OutbreakName + "_" + guid + ".mdb",
                                                                                                  _project.OutbreakDate.Ticks.ToString(),
                                                                                                  _project.OutbreakName);

            Epi.View caseForm = _project.Views[Core.Constants.CASE_FORM_NAME];

            ContactTracing.ImportExport.FormCopier formCopier = new ImportExport.FormCopier(_project, newProject, caseForm);
            formCopier.Copy();

            this.Cursor = Cursors.Arrow;
        }
        private void CreateMDBCommandExecute()
        {
            if (IsCopying) return;

            IsCopying = true;

            Stopwatch sw = new Stopwatch();
            sw.Start();

            bool hasError = false;
            IsShowingCopyProgress = true;
            string guid = Guid.NewGuid().ToString();
            string fileName = _project.FileName.Replace(".prj", String.Empty);

            Task.Factory.StartNew(
                () =>
                {
                    Project newProject = ContactTracing.ImportExport.ImportExportHelper.CreateNewOutbreak(Country,
                        _appCulture, @"Projects\VHF\" + fileName + "_" + guid + ".prj",
                        @"Projects\VHF\" + fileName + "_" + guid + ".mdb",
                        _outbreakDate.Ticks.ToString(),
                        _outbreakName);

                    ContactTracing.ImportExport.FormCopier formCopier = new ImportExport.FormCopier(_project, newProject, _caseForm);

                    formCopier.SetProgressBar += formCopier_SetProgressBar;
                    formCopier.SetMaxProgressBarValue += formCopier_SetMaxProgressBarValue;

                    try
                    {
                        formCopier.Copy();
                    }
                    catch (Exception ex)
                    {
                        hasError = true;
                        System.Windows.Forms.MessageBox.Show(ex.Message, "Exception", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                    }
                    finally
                    {
                        formCopier.SetProgressBar -= formCopier_SetProgressBar;
                        formCopier.SetMaxProgressBarValue -= formCopier_SetMaxProgressBarValue;
                    }
                },
                System.Threading.CancellationToken.None, TaskCreationOptions.LongRunning, TaskScheduler.Default).ContinueWith(
                    delegate
                    {
                        ProgressValue = 0;

                        IsCopying = false;

                        sw.Stop();

                        if (hasError)
                        {
                            CopyStatus = "Copying halted due to error.";

                            System.IO.File.Delete(@"Projects\VHF\" + fileName + "_" + guid + ".prj");
                            System.IO.File.Delete(@"Projects\VHF\" + fileName + "_" + guid + ".mdb");
                        }
                        else
                        {
                            CopyStatus = "Finished copying data to mdb file. Elapsed time: " + sw.Elapsed.TotalMinutes.ToString("F1") + " minutes.";
                        }

                    }, TaskScheduler.FromCurrentSynchronizationContext());
        }