【发布时间】:2011-10-21 00:51:20
【问题描述】:
我正在尝试编写一个应用程序来获取各种 AD 组中的用户列表,并将它们显示在表单上的数据网格中。 当我的表单上的一个按钮被点击时,它会触发一个后台工作人员,该工作人员调用一个方法来获取 AD 组的用户列表。 后台工作人员返回一个数据表,后台工作人员完成方法将数据网格数据源设置为数据表,一切正常。 当我尝试使用后台工作进程更改方法来更新数据网格时,问题就来了分钟。 我正在努力弄清楚为什么会这样。
代码示例:
backroundWorker_DoWork(.........)
{
DataTable dt = new DataTable();
DataRow dr;
//Get datatable from argument
DataTable dt2 = e.Argument as DataTable
//get list of AD groups to check
for (int i = 0; i > dt2.Rows.Count; i++)
{
columnName = dt2.Rows[i][0].ToString();
groupName = dt2.Rows[i][1].ToString();
//Call Method to get users from nested AD groups
GetADUsers(groupName)
//Add users returned from above method to DataTable dt
//..........
//Send DataTable to Report Progress
backgroundWorker.ReportProgress(0, dt);
}
e.Result = dt;
}
backroundWorker_ProgressChanged(..........)
{
DataTable dt = e.UserState as DataTable;
dataGridView1.DataSource = dt;
}
backroundWorker_RunWorkerCompleted(..........)
{
DataTable dt = e.UserState as DataTable;
dataGridView1.DataSource = dt;
}
【问题讨论】:
标签: windows winforms backgroundworker