Я пытаюсь написать приложение, чтобы получить список пользователей в различных группах 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;
}