public void Run(IWorker worker) { worker.OperationName = "Подготовка данных"; worker.ReportProgress(0, "Получение контрагентов"); _counterparties = _counterpartyRepository.GetCounterpartiesWithInnAndAnyContact(_uow); worker.OperationName = "Выгрузка имён и контактных данных"; worker.StepsCount = Steps; Result = new ExportCounterpariesData(_uow); int i = 0; while (!worker.IsCancelled && i < Steps) { worker.ReportProgress(i, "Контрагент"); Result.AddCounterparty(_counterparties[i]); i++; } }
protected void OnBtnRunToFileClicked(object sender, EventArgs e) { using (var exportOperation = new ExportCounterpartiesTo1C()) { this.exportInProgress = true; LongOperationDlg.StartOperation(exportOperation.Run, "", 1, false); this.exportInProgress = false; exportData = exportOperation.Result; } var hasError = UpdateErrors(exportData.Errors); if (hasError) { return; } btnRunToFile.Sensitive = !hasError && !exportInProgress; var settings = new XmlWriterSettings { OmitXmlDeclaration = true, Indent = true, Encoding = System.Text.Encoding.UTF8, NewLineChars = "\r\n" }; var fileChooser = new Gtk.FileChooserDialog("Выберите файл для сохранения выгрузки", (Window)this.Toplevel, Gtk.FileChooserAction.Save, "Отмена", ResponseType.Cancel, "Сохранить", ResponseType.Accept ); var dateText = DateTime.Now.ToShortDateString().Replace(System.IO.Path.DirectorySeparatorChar, '-'); fileChooser.CurrentName = $"Выгрузка контрагентов на {dateText}.xml"; var filter = new FileFilter(); filter.AddPattern("*.xml"); fileChooser.Filter = filter; if (fileChooser.Run() == (int)ResponseType.Accept) { var filename = fileChooser.Filename.EndsWith(".xml") ? fileChooser.Filename : fileChooser.Filename + ".xml"; using (XmlWriter writer = XmlWriter.Create(filename, settings)) { exportData.ToXml().WriteTo(writer); } } fileChooser.Destroy(); }