System.DirectoryServices.AccountManagement.GroupPrincipal безопасный поток?

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

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

2 ответа

Решение

Из MSDN:

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

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

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

Другие вопросы по тегам