<PackageReference Include="NUnit" Version="3.11.0" />

SandboxedThreadState

sealed class SandboxedThreadState
Holds thread state which is captured and restored in order to sandbox user code.
using System.Globalization; using System.Security; using System.Security.Principal; using System.Threading; namespace NUnit.Framework.Internal { internal sealed class SandboxedThreadState { private readonly SynchronizationContext _synchronizationContext; public CultureInfo Culture { get; } public CultureInfo UICulture { get; } public IPrincipal Principal { get; } private SandboxedThreadState(CultureInfo culture, CultureInfo uiCulture, IPrincipal principal, SynchronizationContext synchronizationContext) { Culture = culture; UICulture = uiCulture; Principal = principal; _synchronizationContext = synchronizationContext; } public static SandboxedThreadState Capture() { return new SandboxedThreadState(CultureInfo.CurrentCulture, CultureInfo.CurrentUICulture, Thread.CurrentPrincipal, SynchronizationContext.Current); } [SecurityCritical] public void Restore() { Thread.CurrentThread.CurrentCulture = Culture; Thread.CurrentThread.CurrentUICulture = UICulture; Thread.CurrentPrincipal = Principal; SynchronizationContext.SetSynchronizationContext(_synchronizationContext); } public SandboxedThreadState WithCulture(CultureInfo culture) { return new SandboxedThreadState(culture, UICulture, Principal, _synchronizationContext); } public SandboxedThreadState WithUICulture(CultureInfo uiCulture) { return new SandboxedThreadState(Culture, uiCulture, Principal, _synchronizationContext); } public SandboxedThreadState WithPrincipal(IPrincipal principal) { return new SandboxedThreadState(Culture, UICulture, principal, _synchronizationContext); } } }