PrincipalContext在C#中是否是线程安全的?

时间:2017-02-07 08:53:42

标签: .net

我一遍又一遍地重新创建相同的PrincipalContext。将它推入静态字段并在线程中重用一个实例是否安全?

2 个答案:

答案 0 :(得分:0)

答案似乎是肯定的......假设你没有处理它。初始化例程使用内部锁来防止双重初始化。一旦初始化,它是不可变的(再次,除了被处置)。

答案 1 :(得分:-1)

引用MSDN:

  

此类型的任何公共静态(在Visual Basic中为Shared)成员都是线程安全的。不保证任何实例成员都是线程安全的。

当然,对于任何未明确设计为线程安全的类型,这都是标准答案。可能$(function() { var xml = "<approvalcontent><vac_applier>Name</vac_applier><vac_sdate>2017-02-03</vac_sdate><vac_edate>2017-02-10</vac_edate><vac_reason>kind</vac_reason></approvalcontent>"; bindContent(xml); }); function bindContent(xml) { $(xml).find("approvalcontent").children().each(function(){ alert("here!"); }); } 是线程安全的,但您不应该依赖它 - 它只是一个实现细节,而不是合同保证。

至于是否更有意义地同步对单个实例的访问或为每个线程/操作创建一个新实例,您需要对您的应用程序进行概要分析。它有显着差异吗?您的申请是否受到PrincipalContext费用的限制?只有你可以回答:)