Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LookupAccountSid-taking+;每次通话600毫秒_C#_Winapi_Pinvoke - Fatal编程技术网

C# LookupAccountSid-taking+;每次通话600毫秒

C# LookupAccountSid-taking+;每次通话600毫秒,c#,winapi,pinvoke,C#,Winapi,Pinvoke,我使用GetTokenInformation和TokenGroups标志来检索特定令牌所属的所有组。然后我循环遍历每个返回的SID,并使用LookupAccountSid获取用户名和域。我调用LookupAccountSid两次:第一次获取名称和域字符数组的大小,第二次填充分配的StringBuilders 我被耽搁了很长时间。我运行了ANTS来查看问题所在,发现如果用户是23个组的一部分,那么整个序列将花费15秒!探查器指向LookupAccountSid的第一个调用,并指出每个调用平均652

我使用
GetTokenInformation
TokenGroups
标志来检索特定令牌所属的所有组。然后我循环遍历每个返回的SID,并使用
LookupAccountSid
获取用户名和域。我调用
LookupAccountSid
两次:第一次获取名称和域字符数组的大小,第二次填充分配的
StringBuilder
s

我被耽搁了很长时间。我运行了ANTS来查看问题所在,发现如果用户是23个组的一部分,那么整个序列将花费15秒!探查器指向LookupAccountSid的第一个调用,并指出每个调用平均652毫秒

这是呼叫的样子:

            LookupAccountSid(null, tokenGroups.Groups[i].SID, null, ref accountCount, null,
                             ref domainCount, out snu);

accountCount
domainCount
在此调用之前初始化为0。最后,通话正常,但这种延迟太长了。我做错了什么?

运行探查器时,不可能准确测量所用的时间

只有与所有其他方法相比,它才有用

使用秒表作为计时器运行调用,无需调试信息/附加调试器,并启用优化

编辑:


我的代码在连接探查器(10秒)和NGEN的应用程序(0.1秒)时运行的时间大约是前者的100倍

我猜网络延迟与域控制器或DC本身通信。这个问题实际上是由其他东西解决的,我想,因为探查器减慢了速度,所以bug仍然在四处蔓延。现在执行大约需要1-2毫秒!谢谢你帮助我克服我的无知。:)