public override bool ProcessRecordAsync() { SelectedProviders.ParallelForEach(provider => { _providersProcessed.GetOrAdd(provider.ProviderName, () => false); try { if (Name.IsNullOrEmpty()) { foreach (var pkg in ProcessProvider(provider)) { if (IsPackageInVersionRange(pkg)) { WriteObject(pkg); } } } else { foreach (var n in Name) { foreach (var pkg in ProcessNames(provider, n)) { if (IsPackageInVersionRange(pkg)) { WriteObject(pkg); } } } } } catch (Exception e) { e.Dump(); } }); return(true); }
public override bool ProcessRecordAsync() { if (IsPackageByObject) { return(UninstallPackages(InputObject)); } // otherwise, it's just packages by name _resultsPerName = new Dictionary <string, List <SoftwareIdentity> >(); SelectedProviders.ParallelForEach(provider => { foreach (var n in Name) { var c = _resultsPerName.GetOrAdd(n, () => new List <SoftwareIdentity>()); foreach (var pkg in ProcessNames(provider, n)) { lock (c) { if (IsPackageInVersionRange(pkg)) { c.Add(pkg); } } } } }); return(true); }