【问题标题】:Multi-Thread & Active Directory多线程和活动目录
【发布时间】:2014-05-08 13:33:59
【问题描述】:

我正在编写一个从 Active Directory 中提取计算机名称的应用程序。这个过程非常低。

Dim childEntry As DirectoryEntry
    Dim ParentEntry As New DirectoryEntry()
    Try
        ParentEntry.Path = "WinNT:"
        For Each childEntry In ParentEntry.Children
            Dim newNode As New TreeNode(childEntry.Name)
            Select Case childEntry.SchemaClassName
                Case "Domain"
                    Dim ParentDomain As New TreeNode(childEntry.Name)
                    TreeView1.Nodes.AddRange(New TreeNode() {ParentDomain})

                    Dim SubChildEntry As DirectoryEntry
                    Dim SubParentEntry As New DirectoryEntry()
                    SubParentEntry.Path = "WinNT://" & childEntry.Name
                    For Each SubChildEntry In SubParentEntry.Children
                        Dim newNode1 As New TreeNode(SubChildEntry.Name)
                        Select Case SubChildEntry.SchemaClassName
                            Case "Computer"
                                ParentDomain.Nodes.Add(newNode1)
                        End Select
                    Next
            End Select
        Next
    Catch Excep As Exception
        MsgBox("Error While Reading Directories")

    Finally
        ParentEntry = Nothing
    End Try

所以提问时间。

1.) 它会通过在另一个线程中运行此代码来加快进程吗?

2.) 如果是这样,我将如何去做? (请记住,我从未成功实现过多线程)

谢谢大家!!

【问题讨论】:

  • 否 - 在单独的线程中运行不会使其执行更快(甚至可能更慢)。它会做的不是在搜索时冻结 UI。

标签: vb.net multithreading active-directory


【解决方案1】:

我一点也不惊讶慢!如果您查看 System.DirectoryServices.AccountManagement 命名空间,您会发现一种更简单、更快捷的方法来获取计算机名称列表等信息。

【讨论】:

  • 我认为 AccountManagement 会帮助返回用户和编辑用户而不是域计算机...
  • @improv_monkey 两者都可以。
猜你喜欢
  • 1970-01-01
  • 2014-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多