gpt4 book ai didi

c# - .Net 线程.CurrentPrincipal

转载 作者:太空宇宙 更新时间:2023-11-03 21:22:38 25 4
gpt4 key购买 nike

在什么情况下,当前线程的主体丢失。我有一个 Windows 窗体应用程序,它使用主体作为主线程并通过 WCF 从服务器接收通知。在某些客户端上,我丢失了当前线程的 Principal,但我不明白为什么。“丢失”似乎来自代码:

foreach (EventHandler subscriber in onApplicationIdle.GetInvocationList())
{
subscriber.BeginInvoke(this, e, OnAsyncCompleted, subscriber);
}

最佳答案

当您在 .NET 中创建新线程时,父线程的主体不会自动传播。如果您正在制作线程,则必须自己执行此操作。

如果您使用的是 async,我相信它在其创建的任何线程中都有自己的身份传播规则。

调用 BeginInvoke 将方法放入 ThreadPool(我相信!),因此线程池原则适用于此。我认为这意味着你必须自己做!

您可以通过调用 AppDomain.SetPrincipalPolicy 使您创建的所有线程自动设置主体。 , 但这只涵盖了 PrincipalPolicy enum 中的三种类型.

否则由您在线程代码中手动设置 Thread.Current.Principal()。

请参阅wrong-thread-currentprincipal-in-async-wcf-end-method用于类似讨论的 Stack overflow 帖子。

关于c# - .Net 线程.CurrentPrincipal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29748740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com