private void LoadAllPackagesThread() { // load and parse first page to have total item count this.Log().Debug("Load packages"); var xmlDocument = LoadFeedDoc(0); var packageVersions = _xmlParser.parse(xmlDocument); var totalCount = _xmlParser.LastTotalCount; var pageSize = packageVersions.Count(); // load other pages with thread pool IList<BackgroundPageObject> bgPageObjects = new List<BackgroundPageObject>(); for (var skip = pageSize; skip < totalCount; skip += pageSize) { var backgroundPageObject = new BackgroundPageObject(skip, new ManualResetEvent(false)); bgPageObjects.Add(backgroundPageObject); ThreadPool.QueueUserWorkItem(LoadPageAsync, backgroundPageObject); } // concat and return results _libDirHelper.ReloadFromDir(); var allPackages = packageVersions.Select( PackageFromVersion ); foreach (var backgroundPageObject in bgPageObjects) { backgroundPageObject.DoneEvent.WaitOne(); allPackages = allPackages.Concat( backgroundPageObject.PackageVersions.Select( PackageFromVersion ) ); } OnRunFinshed(allPackages.ToList()); }
private void LoadAllPackagesThread() { // load and parse first page to have total item count this.Log().Debug("Load packages"); var xmlDocument = LoadFeedDoc(0); var packageVersions = _xmlParser.parse(xmlDocument); var totalCount = _xmlParser.LastTotalCount; var pageSize = packageVersions.Count(); // load other pages with thread pool IList <BackgroundPageObject> bgPageObjects = new List <BackgroundPageObject>(); for (var skip = pageSize; skip < totalCount; skip += pageSize) { var backgroundPageObject = new BackgroundPageObject(skip, new ManualResetEvent(false)); bgPageObjects.Add(backgroundPageObject); ThreadPool.QueueUserWorkItem(LoadPageAsync, backgroundPageObject); } // concat and return results _libDirHelper.ReloadFromDir(); var allPackages = packageVersions.Select(PackageFromVersion); foreach (var backgroundPageObject in bgPageObjects) { backgroundPageObject.DoneEvent.WaitOne(); allPackages = allPackages.Concat( backgroundPageObject.PackageVersions.Select(PackageFromVersion) ); } OnRunFinshed(allPackages.ToList()); }