From 37280ce9a3a0bb1b6f608d8d6d6cac7df8f5273b Mon Sep 17 00:00:00 2001 From: CeciliaAvila Date: Thu, 23 Feb 2023 11:00:31 -0300 Subject: [PATCH 1/2] Use ConcurrentDictionary in TimeZoneConverter --- libraries/AdaptiveExpressions/TimeZoneConverter.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libraries/AdaptiveExpressions/TimeZoneConverter.cs b/libraries/AdaptiveExpressions/TimeZoneConverter.cs index 5de02dc424..6a43455ab3 100644 --- a/libraries/AdaptiveExpressions/TimeZoneConverter.cs +++ b/libraries/AdaptiveExpressions/TimeZoneConverter.cs @@ -2,7 +2,7 @@ // Licensed under the MIT License. using System; -using System.Collections.Generic; +using System.Collections.Concurrent; using System.IO; using System.Reflection; @@ -18,8 +18,8 @@ namespace AdaptiveExpressions /// public static class TimeZoneConverter { - private static IDictionary ianaToWindowsMap = new Dictionary(StringComparer.OrdinalIgnoreCase); - private static IDictionary windowsToIanaMap = new Dictionary(StringComparer.OrdinalIgnoreCase); + private static ConcurrentDictionary ianaToWindowsMap = new ConcurrentDictionary(StringComparer.OrdinalIgnoreCase); + private static ConcurrentDictionary windowsToIanaMap = new ConcurrentDictionary(StringComparer.OrdinalIgnoreCase); /// /// convert IANA timezone format to windows timezone format. @@ -69,14 +69,14 @@ private static void LoadData() var ianaIdList = table[2].Split(' '); if (!windowsToIanaMap.ContainsKey($"{territory}|{windowsId}")) { - windowsToIanaMap.Add($"{territory}|{windowsId}", ianaIdList[0]); + windowsToIanaMap.TryAdd($"{territory}|{windowsId}", ianaIdList[0]); } foreach (var ianaId in ianaIdList) { if (!ianaToWindowsMap.ContainsKey(ianaId)) { - ianaToWindowsMap.Add(ianaId, windowsId); + ianaToWindowsMap.TryAdd(ianaId, windowsId); } } } From d6eaed243c828d084f45b6f0a085b7d36132957c Mon Sep 17 00:00:00 2001 From: CeciliaAvila Date: Thu, 23 Feb 2023 12:14:44 -0300 Subject: [PATCH 2/2] Add static constructor --- libraries/AdaptiveExpressions/TimeZoneConverter.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/libraries/AdaptiveExpressions/TimeZoneConverter.cs b/libraries/AdaptiveExpressions/TimeZoneConverter.cs index 6a43455ab3..f9b29467d0 100644 --- a/libraries/AdaptiveExpressions/TimeZoneConverter.cs +++ b/libraries/AdaptiveExpressions/TimeZoneConverter.cs @@ -21,6 +21,11 @@ public static class TimeZoneConverter private static ConcurrentDictionary ianaToWindowsMap = new ConcurrentDictionary(StringComparer.OrdinalIgnoreCase); private static ConcurrentDictionary windowsToIanaMap = new ConcurrentDictionary(StringComparer.OrdinalIgnoreCase); + static TimeZoneConverter() + { + LoadData(); + } + /// /// convert IANA timezone format to windows timezone format. /// @@ -28,7 +33,6 @@ public static class TimeZoneConverter /// windows timezone format. public static string IanaToWindows(string ianaTimeZoneId) { - LoadData(); if (ianaToWindowsMap.ContainsKey(ianaTimeZoneId)) { return ianaToWindowsMap[ianaTimeZoneId]; @@ -44,7 +48,6 @@ public static string IanaToWindows(string ianaTimeZoneId) /// Iana timezone format. public static string WindowsToIana(string windowsTimeZoneId) { - LoadData(); if (windowsToIanaMap.ContainsKey($"001|{windowsTimeZoneId}")) { return windowsToIanaMap[$"001|{windowsTimeZoneId}"];