private async Task LoadPlaylist(string filename) { var config = new JobRunnerConfiguration <string, IEnumerable <string> > { JobDescription = "Reading playlist file", JobTitle = "Loading...", ReportTaskBarProgress = true, JobInput = filename, }; string ext = Path.GetExtension(filename); switch (ext) { case ".pls": config.Job = new LoadPLSJob(); break; case ".m3u": config.Job = new LoadM3UJob(); break; case ".wpl": config.Job = new LoadWPLJob(); break; case ".asx": config.Job = new LoadASXJob(); break; } try { var result = await JobRunner.RunJob(config); Application.Current.Dispatcher.Invoke(() => { _list.AddRange(result.Result); }); } catch (Exception ex) { Helpers.ErrorDialog(ex, Properties.Resources.Error_FileLoad); } }
private async void Drive_Click(object sender, RoutedEventArgs e) { var menuitem = sender as MenuItem; var drive = menuitem.Header.ToString(); var type = DriveType.Removable; Enum.TryParse(menuitem.Tag.ToString(), out type); var config = new JobRunnerConfiguration <string, IEnumerable <string> > { JobDescription = "Searching Device for playable content", JobTitle = "Loading...", ReportTaskBarProgress = true, JobInput = drive, }; try { JobResult <IEnumerable <string> > results; if (type == DriveType.CDRom) { config.Job = new CDGetInfoJob(); results = await JobRunner.RunJob(config); if (results.Result.Any()) { _list.AddRange(results.Result); } } config.Job = new ImportFromMassStorageJob(); results = await JobRunner.RunJob(config); if (results.Result.Any()) { _list.AddRange(results.Result); } } catch (Exception ex) { Helpers.ErrorDialog(ex, Properties.Resources.Error_FileLoad); } }