является ли System.DirectoryServices.Управление учетными записями.Потокобезопасен для основной группы?
-
22-09-2019 - |
Вопрос
Я пишу программу, которая будет создавать пользователей массово, у меня есть операция, которая является частью создания, которая блокируется примерно на 5 секунд, чтобы обойти это, я собирался сделать ее поточной и поместить все в пул потоков.
Мой вопрос заключается в том, создаю ли я принцип вне потока и передаю групповой принцип потоку и вызываю group.Members.Add(u)
и group.Save()
могу ли я попасть в беду?было бы лучше сгенерировать нового участника группы внутри каждого потока?
Решение
От MSDN:
Любые общедоступные статические (совместно используемые в Visual Basic) элементы этого типа потокобезопасны.Потокобезопасность любых членов экземпляра не гарантируется.
Это маленькое примечание является очень распространенным в документации.Вам, программисту, решать, что вы подразумеваете под "потокобезопасностью" и как контролировать параллельный доступ.
Другие советы
Каждый раз, когда два потока воздействуют на один и тот же экземпляр коллекции, вы небезопасны.Если вы просто используете один фоновый поток, чтобы пользовательский интерфейс не блокировался, тогда создайте группу в фоновом потоке и используйте ее исключительно там.Если вы планируете ускорить добавление пользователей в группу, запустив несколько потоков для одновременного доступа к Active Directory, я предполагаю, что это не поможет.