ThreadCultureSanitizer.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. using System.Globalization;
  2. using System.Threading;
  3. namespace Abp.Threading
  4. {
  5. /// <summary>
  6. /// This class is copied from here:
  7. /// http://www.zpqrtbnk.net/posts/appdomains-threads-cultureinfos-and-paracetamol
  8. /// It's a workaround for application startup problem.
  9. /// </summary>
  10. public static class ThreadCultureSanitizer
  11. {
  12. public static void Sanitize()
  13. {
  14. var currentCulture = CultureInfo.CurrentCulture;
  15. // at the top of any culture should be the invariant culture,
  16. // find it doing an .Equals comparison ensure that we will
  17. // find it and not loop endlessly
  18. var invariantCulture = currentCulture;
  19. while (invariantCulture.Equals(CultureInfo.InvariantCulture) == false)
  20. {
  21. invariantCulture = invariantCulture.Parent;
  22. }
  23. if (ReferenceEquals(invariantCulture, CultureInfo.InvariantCulture))
  24. {
  25. return;
  26. }
  27. var thread = Thread.CurrentThread;
  28. CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo(thread.CurrentCulture.Name);
  29. CultureInfo.CurrentUICulture = CultureInfo.GetCultureInfo(thread.CurrentUICulture.Name);
  30. }
  31. }
  32. }