System.DirectoryServices.AccountManagement.GroupPrincipal безопасный поток? - PullRequest
0 голосов
/ 22 января 2010

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

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

Ответы [ 2 ]

1 голос
/ 21 мая 2010

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

0 голосов
/ 22 января 2010

С MSDN :

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

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

...