private void ModifySelectionExecuted(object sender, ExecutedRoutedEventArgs e) { if (e.Parameter == null) return; if (e.Parameter.ToString().ToLowerInvariant().Equals("selectall")) { ListViewExplorer.SelectedItems.Clear(); ListViewExplorer.Items.Cast<FileSystemInfo>() .AsParallel() .ForAll(info => { Dispatcher.InvokeAsync(()=> { ListViewExplorer.SelectedItems.Add(info); }); }); } else { var fs = new FileSystemInfo[ListViewExplorer.SelectedItems.Count]; ListViewExplorer.SelectedItems.CopyTo(fs, 0); if (fs.Length > 0) { ListViewExplorer.SelectedItems.Clear(); ListViewExplorer.Items.Cast<FileSystemInfo>() .AsParallel() .ForAll(info => { if (!fs.Contains(info)) { Dispatcher.InvokeAsync(() => { ListViewExplorer.SelectedItems.Add(info); }); } }); } } }