Я написал довольно простое приложение C#, которое сканирует наш активный каталог для заблокированных учетных записей и возвращает имена пользователей в поле списка (LB1). Вот код для поиска. Это подпадает под событием Button_Click:Индикатор выполнения Winforms с использованием функции PrincipalSearcher
try
{
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "DOMAIN", "OU=OUnAme,DC=DOMAIN,DC=com");
UserPrincipal qbeUser = new UserPrincipal(ctx);
qbeUser.Enabled = true;
PrincipalSearcher search = new PrincipalSearcher(qbeUser);
foreach (UserPrincipal user in search.FindAll())
{
if (user.IsAccountLockedOut())
{
LB1.Items.Add(user.SamAccountName.ToString());
}
}
}
Есть ли способ осуществить прогресс бар, который заполняет для() события FindAll? Хотел бы я просто сначала выполнить функцию count, чтобы определить максимальное значение для индикатора выполнения, а затем добавить дополнение в качестве первого шага цикла foreach?
Спасибо, WES
Не успел дать хороший полный ответ, но вы, вероятно, захотите посмотреть в ['BackgroundWorker'] (http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker % 28v = vs.110% 29.aspx), чтобы вы могли выполнять обработку без блокировки потока пользовательского интерфейса. Также имейте в виду [этот вопрос] (http://stackoverflow.com/questions/661561/how-to-update-the-gui-from-another-thread-in-c), в котором подробно описывается, как обновлять поток пользовательского интерфейса из фоновый поток. – Anthony