From b79f34d4cc6fc288b8ca7360a5af14df121a8394 Mon Sep 17 00:00:00 2001 From: "Rune B. Broberg" Date: Sun, 16 Jul 2023 17:51:47 +0200 Subject: [PATCH] Fix for modifying an enumerated collection while traversing it. --- src/Docfx.Build.Engine/XRefMaps/XRefCollection.cs | 9 +++++---- src/Docfx.Build.Engine/XRefMaps/XRefMapDownloader.cs | 2 ++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/Docfx.Build.Engine/XRefMaps/XRefCollection.cs b/src/Docfx.Build.Engine/XRefMaps/XRefCollection.cs index fbe6e506f79..82cb5f8c549 100644 --- a/src/Docfx.Build.Engine/XRefMaps/XRefCollection.cs +++ b/src/Docfx.Build.Engine/XRefMaps/XRefCollection.cs @@ -45,13 +45,14 @@ public async Task CreateAsync() { AddToDownloadList(_uris); var dict = new Dictionary(); - foreach (var item in _processing) + while (_processing.Any()) { - var task = item.Key; - var uri = item.Value; + Task task = await Task.WhenAny(_processing.Keys); + Uri uri = _processing[task]; + _processing.Remove(task); try { - var container = await task; + IXRefContainer container = await task; if (!container.IsEmbeddedRedirections) { AddToDownloadList( diff --git a/src/Docfx.Build.Engine/XRefMaps/XRefMapDownloader.cs b/src/Docfx.Build.Engine/XRefMaps/XRefMapDownloader.cs index c6c1524620e..24391f3edac 100644 --- a/src/Docfx.Build.Engine/XRefMaps/XRefMapDownloader.cs +++ b/src/Docfx.Build.Engine/XRefMaps/XRefMapDownloader.cs @@ -109,6 +109,7 @@ protected static IXRefContainer DownloadFromLocal(Uri uri) private static IXRefContainer ReadLocalFile(string filePath) { + Logger.LogVerbose($"Reading from file: {filePath}"); if (".zip".Equals(Path.GetExtension(filePath), StringComparison.OrdinalIgnoreCase)) { return XRefArchive.Open(filePath, XRefArchiveMode.Read); @@ -120,6 +121,7 @@ private static IXRefContainer ReadLocalFile(string filePath) protected static async Task DownloadFromWebAsync(Uri uri) { + Logger.LogVerbose($"Reading from web: {uri.OriginalString}"); var baseUrl = uri.GetLeftPart(UriPartial.Path); baseUrl = baseUrl.Substring(0, baseUrl.LastIndexOf('/') + 1);