From 47579b607272f2e5a308f473448a89fa75e945e9 Mon Sep 17 00:00:00 2001 From: Chris Wendt Date: Sat, 27 Mar 2021 10:26:39 -0700 Subject: [PATCH] Insert locks --- .gitignore | 1 + .../ViewModel/DocumentTranslation.cs | 5 +++- .../TranslationServiceFacade.cs | 23 ++++++++++++------- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 658c904..e3853f1 100644 --- a/.gitignore +++ b/.gitignore @@ -45,3 +45,4 @@ TranslationAssistant.DocumentTranslationInterface/bin/Release/FileTranslator.vsh /OpenXmlPowerTools/bin/Debug /.vs/Microsoft.DocumentTranslator/DesignTimeBuild .vs/ +.vs/slnx.sqlite diff --git a/TranslationAssistant.DocumentTranslationInterface/ViewModel/DocumentTranslation.cs b/TranslationAssistant.DocumentTranslationInterface/ViewModel/DocumentTranslation.cs index 25e5aa9..213f42b 100644 --- a/TranslationAssistant.DocumentTranslationInterface/ViewModel/DocumentTranslation.cs +++ b/TranslationAssistant.DocumentTranslationInterface/ViewModel/DocumentTranslation.cs @@ -526,7 +526,10 @@ public void PopulateAvailableLanguages() if (!TranslationServiceFacade.UseCustomEndpoint) this.sourceLanguageList.Add(Properties.Resources.Common_AutoDetect); try { - this.targetLanguageList.AddRange(TranslationServiceFacade.AvailableLanguages.Values); + lock (TranslationServiceFacade.AvailableLanguages) + { + this.targetLanguageList.AddRange(TranslationServiceFacade.AvailableLanguages.Values); + } } catch (Exception ex) { this.StatusText = String.Format("{0}\n{1}", Properties.Resources.Error_LanguageList, ex.Message); diff --git a/TranslationServices.Core/TranslationServiceFacade.cs b/TranslationServices.Core/TranslationServiceFacade.cs index be66850..00ad214 100644 --- a/TranslationServices.Core/TranslationServiceFacade.cs +++ b/TranslationServices.Core/TranslationServiceFacade.cs @@ -371,7 +371,10 @@ public static async Task GetLanguages(string AcceptLanguage = "en") /// Accept-Language private static async Task GetLanguagesInternal(string AcceptLanguage = "en") { - AvailableLanguages.Clear(); + lock (AvailableLanguages) + { + AvailableLanguages.Clear(); + } if (UseCustomEndpoint) { ContainerGetLanguages(); @@ -390,17 +393,21 @@ private static async Task GetLanguagesInternal(string AcceptLanguage = "en") request.Headers.Add("Accept-Language", AcceptLanguage); HttpResponseMessage response = await client.SendAsync(request).ConfigureAwait(false); string jsonResponse = await response.Content.ReadAsStringAsync().ConfigureAwait(false); - if (response.StatusCode == System.Net.HttpStatusCode.OK) + lock (AvailableLanguages) { - var result = JsonConvert.DeserializeObject>>>(jsonResponse); - var languages = result["translation"]; - - string[] languagecodes = languages.Keys.ToArray(); - foreach (var kv in languages) + if (response.StatusCode == System.Net.HttpStatusCode.OK) { - AvailableLanguages.Add(kv.Key, kv.Value["name"]); + var result = JsonConvert.DeserializeObject>>>(jsonResponse); + var languages = result["translation"]; + + string[] languagecodes = languages.Keys.ToArray(); + foreach (var kv in languages) + { + AvailableLanguages.Add(kv.Key, kv.Value["name"]); + } } } + Debug.Assert(AvailableLanguages.Count > 0, "GetLanguagesInternal: Zero languages."); } catch (HttpRequestException) {