我写了一个非常简单的c#app,它扫描我们的活动目录中的锁定帐户,并将用户名返回到列表框(LB1)。这是搜索的代码。它属于Button_Click事件:
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()事件的进度条?我是否只想首先执行计数功能,确定进度条的最大值,然后添加一个incrament作为foreach循环的第一步?
谢谢你, 韦斯
答案 0 :(得分:0)
使用此
UserPrincipal []user_all = search.FindAll();
int max = user_all.length;
progressBar1.Maximum = max;
progressBar1.Step = 1;
foreach (UserPrincipal user in user_all)
{
if (user.IsAccountLockedOut())
{
LB1.Items.Add(user.SamAccountName.ToString());
}
progressBar1.PerformStep();
}
答案 1 :(得分:0)
我会在这种情况下执行的一般工作流程,因为您无法从FindAll
获得进度反馈。
FindAll()
结果设置为本地变量并计算。不要忘记在后台线程中执行此操作,以便您可以实际执行工作并同时更新UI。