我正試圖編寫一個應用程序來獲取列表中的各個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;
}