diff --git a/src/System.Private.CoreLib/shared/System/Threading/Thread.cs b/src/System.Private.CoreLib/shared/System/Threading/Thread.cs index 28b2e6eb8f5a..a2be70c847fc 100644 --- a/src/System.Private.CoreLib/shared/System/Threading/Thread.cs +++ b/src/System.Private.CoreLib/shared/System/Threading/Thread.cs @@ -136,11 +136,12 @@ public static IPrincipal? CurrentPrincipal { get { - if (s_asyncLocalPrincipal is null) + IPrincipal? principal = s_asyncLocalPrincipal?.Value; + if (principal is null) { - CurrentPrincipal = AppDomain.CurrentDomain.GetThreadPrincipal(); + CurrentPrincipal = (principal = AppDomain.CurrentDomain.GetThreadPrincipal()); } - return s_asyncLocalPrincipal?.Value; + return principal; } set {