является ли System.DirectoryServices.Управление учетными записями.Потокобезопасен для основной группы?

StackOverflow https://stackoverflow.com/questions/2118260

Вопрос

Я пишу программу, которая будет создавать пользователей массово, у меня есть операция, которая является частью создания, которая блокируется примерно на 5 секунд, чтобы обойти это, я собирался сделать ее поточной и поместить все в пул потоков.

Мой вопрос заключается в том, создаю ли я принцип вне потока и передаю групповой принцип потоку и вызываю group.Members.Add(u) и group.Save() могу ли я попасть в беду?было бы лучше сгенерировать нового участника группы внутри каждого потока?

Это было полезно?

Решение

От MSDN:

Любые общедоступные статические (совместно используемые в Visual Basic) элементы этого типа потокобезопасны.Потокобезопасность любых членов экземпляра не гарантируется.

Это маленькое примечание является очень распространенным в документации.Вам, программисту, решать, что вы подразумеваете под "потокобезопасностью" и как контролировать параллельный доступ.

Другие советы

Каждый раз, когда два потока воздействуют на один и тот же экземпляр коллекции, вы небезопасны.Если вы просто используете один фоновый поток, чтобы пользовательский интерфейс не блокировался, тогда создайте группу в фоновом потоке и используйте ее исключительно там.Если вы планируете ускорить добавление пользователей в группу, запустив несколько потоков для одновременного доступа к Active Directory, я предполагаю, что это не поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top