다양한 AD 그룹의 사용자 목록을 가져 와서 양식의 DataGrid에 표시하는 응용 프로그램을 작성하려고합니다. 폼의 단추를 클릭하면 AD 그룹에 대한 사용자 목록을 가져 오는 메서드를 호출하는 백그라운드 작업자가 실행됩니다. 백그라운드 작업자가 데이터 테이블을 반환하고 백그라운드 작업자가 완료 한 메서드는 데이터 표 데이터 원본을 데이터 테이블로 설정하고 모든 작업이 정상적으로 수행됩니다. 배경 작업자 진행률이 변경된 메서드를 사용하여 각 데이터 테이블 열이 채워질 때마다 데이터 표를 업데이트하려고하면 문제가 발생합니다. 배경 작업자가 실행 중일 때 작동하지만 그리드가 끝나고 양식이 응답하지 않게되면 작동합니다. 몇 분. 나는 이것이 왜 있는지 알아 내려고 애 쓰고 있습니다.배경 작업자 업데이트 진행 중 DataGridview가 멈춤
코드 예제 : 연습 전으로
DataTable dt = e.Result as DataTable,
: RunWorkerCompled() 이벤트 핸들러에서
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;
}