private void ImportAll_Execute(object parameter) { var dlg = new CommonOpenFileDialog { Title = "Select a folder to import the resources from:", IsFolderPicker = true, AddToMostRecentlyUsedList = false, AllowNonFileSystemItems = false, EnsureFileExists = true, EnsurePathExists = true, EnsureReadOnly = false, EnsureValidNames = true, Multiselect = false, ShowPlacesList = true }; if (dlg.ShowDialog() == CommonFileDialogResult.Ok) { try { var progDialogVM = new ProgressDialogViewModel() { PercentageMax = mainView.ErpFile.Resources.Count }; var progDialog = new View.ProgressDialog { DataContext = progDialogVM }; var files = Directory.GetFiles(dlg.FileName, "*", SearchOption.AllDirectories); var task = Task.Run(() => resourceExporter.Import(mainView.ErpFile, files, progDialogVM.ProgressStatus, progDialogVM.ProgressPercentage)); progDialog.ShowDialog(); task.Wait(); foreach (var child in resources) { child.UpdateSize(); } } catch (Exception ex) { MessageBox.Show("Failed Importing!" + Environment.NewLine + Environment.NewLine + ex.Message, Properties.Resources.AppTitleLong, MessageBoxButton.OK, MessageBoxImage.Error); } } }
static void Import(string file, string folder) { ErpFile erp = new ErpFile(); using (var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read)) erp.Read(fs); var progressStatus = new Progress <string>(status => { _stringBuilder.Append(status); }); var resourceExporter = new ErpResourceExporter(); resourceExporter.Import(erp, Directory.GetFiles(folder, "*", SearchOption.AllDirectories), progressStatus, null); using (var fs = File.Open(file, FileMode.Create, FileAccess.Write, FileShare.Read)) erp.Write(fs); }