Beispiel #1
0
        void DoExport(Portion portion = null)
        {
            exportTabs.SelectedTabPage = logTabPage;
            log.Clear();

            if (portion == null && !exporter.AnyNewDataToExport())
            {
                exporter_OnMessage(Program.LanguageManager.GetString(StringResources.Export_NoData));
                return;
            }

            SaveFileDialog dlg = new SaveFileDialog();

            dlg.Filter = Program.LanguageManager.GetString(StringResources.Export_Filter) + Resources.prizm;

            if (dlg.ShowDialog() != System.Windows.Forms.DialogResult.OK)
            {
                return;
            }

            exporter.ArchiveName = dlg.FileName;

            exporter.OnMessage -= exporter_OnMessage;
            exporter.OnDone    -= exporter_OnDone;
            exporter.OnError   -= exporter_OnError;

            exporter.OnMessage += exporter_OnMessage;
            exporter.OnDone    += exporter_OnDone;
            exporter.OnError   += exporter_OnError;

            progressPanel.Visible = true;

            Task task = portion == null ? new Task(() => exporter.Export()) : new Task(() => exporter.Export(portion));

            task.ContinueWith((_) => {
                if (progressPanel.InvokeRequired)
                {
                    progressPanel.Invoke(new MethodInvoker(() => { progressPanel.Visible = false; }));
                }
                else
                {
                    progressPanel.Visible = false;
                }

                LoadPortions();
            });
            task.Start();
        }