private void managerUpdatedAvailableApps(object sender, EventArgs e) { if (this.InvokeRequired) { AvailableAppsUpdatedEventHandler d = new AvailableAppsUpdatedEventHandler(managerUpdatedAvailableApps); this.Invoke(d, new object[] { sender, e }); } else { refreshAvailableAppsListView(); } }
private void updateAvailableApps() { // merge all peers' available apps, deduplicate, then subtract ones we've already got in our library HashSet <AppInfo> availableApps = new HashSet <AppInfo>(); foreach (SyncPeer peer in _peers) { if (peer.Apps != null) { availableApps.UnionWith(peer.Apps); } } availableApps.RemoveWhere((app) => { return(Library.Apps.ContainsKey(app.AppId)); }); AvailableApps = availableApps.ToList <AppInfo>(); // notify listeners that the list has changed AvailableAppsUpdatedEventHandler handler = OnAvailableAppsUpdated; if (handler != null) { handler(this, new EventArgs()); } }