我正试图编写一个应用程序来获取列表中的各个AD组中的用户并将它们显示在窗体上的数据网格中。 点击表单上的按钮后,会触发后台工作人员调用方法来获取AD组的用户列表。 后台工作人员返回一个数据表,后台工作人员完成方法将数据网格数据源设置为数据表,一切正常。 当我尝试使用后台工作进程更改方法来更新数据网格时,会出现问题,因为每个数据表列都被填充。它在后台工作正在运行时工作正常,但是当它完成网格并且表单变得无响应时几分钟。 我正在努力弄清楚为什么这是。后台工作人员更新进度冻结datagridview
代码示例:
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;
}