public async void RunExecute() { try { if (!ValidatePaths()) { return; } IFilesLoader filesLoader = new FilesLoader(); CDBuilder cdBuilder = new CDBuilder(); foreach (var(nameInIso, fullName) in filesLoader.GetFiles(SourcePath)) { cdBuilder.AddFile(nameInIso, fullName); } IsNotRunning = false; await cdBuilder.BuildAsync(DestinationPath, (current, max) => ProgressValue = current / (double)max * 100); ProgressValue = 100; IsNotRunning = true; MessageBox.Show("Operation complete"); } catch (Exception exception) { MessageBox.Show( $"Problem has occurred during processing. Details below:{Environment.NewLine}{exception.Message}"); IsNotRunning = true; ProgressValue = 0; } }