getgroup()非常慢

时间:2015-06-24 12:22:36

标签: vb.net active-directory

我正在使用函数getgroup()来读取活动目录中用户的所有组。

我不确定我做错了什么但是非常慢。每次到达此点时,都需要几秒钟。我还使用“Accountmanagement”的集成功能访问Active目录的其余部分,并立即执行。

以下是代码:

For y As Integer = 0 To AccountCount - 1
    Dim UserGroupArray As PrincipalSearchResult(Of Principal) = UserResult(y).GetGroups()

    UserInfoGroup(y) = New String(UserGroupArray.Count - 1) {}

    For i As Integer = 0 To UserGroupArray.Count - 1
        UserInfoGroup(y)(i) = UserGroupArray(i).ToString()
    Next
Next

稍后......:

AccountChecker_Listview.Groups.Add(New ListViewGroup(Items(y, 0), HorizontalAlignment.Left))
For i As Integer = 0 To UserInfoGroup(y).Count - 1
    AccountChecker_Listview.Items.Add(UserInfoGroup(y)(i)).Group = AccountChecker_Listview.Groups(y)
Next

项目(,)包含我显示的正常活动目录数据项目(y,0)包含用户名。

y是AD中的用户帐户数。我还有其他一些代码用于此循环中的其他信息,但这不是问题。

任何人都知道如何让这个更快或者是否有其他解决方案?

1 个答案:

答案 0 :(得分:1)

我建议您尝试找出花费的时间。一种选择是使用分析器,可以是Visual Studio内置的分析器,也可以是Redgate's Ants ProfilerYourkit .Net Profiler等第三方分析器。

另一种方法是使用System.Diagnostics.Stopwatch class跟踪所花费的时间,并使用结果指导您的优化工作。例如,时间从Active Directory检索数据的功能,并单独计时填充视图的功能,以缩小瓶颈所在的位置。

如果瓶颈在Active Directory查找中,您可能需要考虑异步运行操作,以便不阻止窗口并在检索新数据时填充。如果它在列表视图中,您可能需要考虑例如在批处理操作中插入数据。