Exemple #1
0
        private static async Task ExtractBinary(BinaryPathControl control, string?outputPath)
        {
            if (string.IsNullOrWhiteSpace(outputPath) || string.IsNullOrWhiteSpace(control.BinaryPath) || !Directory.Exists(outputPath) || !File.Exists(control.BinaryPath))
            {
                return;
            }

            await Task.Run(() =>
            {
                try
                {
                    IBinaryFileHandler fileHandler = control.BinaryFileType switch
                    {
                        BinaryFileType.Particle => new ParticleFileHandler(),
                        _ => new ResourceFileHandler(control.BinaryFileType),
                    };

                    fileHandler.ExtractBinary(control.BinaryPath, outputPath, control.Progress);
                    App.Instance.Dispatcher.Invoke(() => control.Progress.Report("Completed successfully.", 1));
                }
                catch (Exception ex)
                {
                    App.Instance.Dispatcher.Invoke(() =>
                    {
                        App.Instance.ShowError("Extracting binary did not complete successfully", $"An error occurred while extracting '{control.BinaryFileType.ToString().ToLower(CultureInfo.InvariantCulture)}' binary.", ex);
                        control.Progress.Report("Execution did not complete successfully.");
                    });
                }
            });
        }