C#清除线程主体

gim*_*mpy 9 c# wpf

如何清除c#中的线程主体.

我有一个后台线程,它做了一个

Membership.ValidateUser(username, password);
Run Code Online (Sandbox Code Playgroud)

然后将生成的Principal复制回主线程

AppDomain.CurrentDomain.SetThreadPrincipal(Thread.CurrentPrincipal);
Run Code Online (Sandbox Code Playgroud)

这很好用.但是,如果我注销我想清除主体,如果我将它设置为null它什么都不做Thread.CurrentPrincipal = null; 如果我尝试通过再次设置它

AppDomain.CurrentDomain.SetThreadPrincipal(Thread.CurrentPrincipal);
Run Code Online (Sandbox Code Playgroud)

我收到了错误

Default principal object cannot be set twice.
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

gim*_*mpy 4

解决这个问题的技巧是创建一个外观主体并将其分配给线程。然后您可以将当前用户切换为新用户。