이 코드는 데이터가로드되기 전에 양식을로드 할 수 있지만 데이터가로드 될 때까지 단추 및 DataGridview 자체와 같은 폼의 일부 구성 요소는 "보이지 않습니다".비동기 적으로 데이터 그리드 뷰에 데이터를로드하는 가장 좋은 방법은 무엇입니까?
이 문제를 어떻게 해결합니까?
private void Form1_Load(object sender, EventArgs e)
{
Thread t = new Thread(new ThreadStart(delegate()
{
this.Invoke(new MyDelegate(delegate()
{
ReadXml(path);
Bind();
}));
}));
t.Start();
}
private void Bind()
{
dataGridView1.DataSource = table;
}
이 코드는 더 잘 작동하지만 2 개의 새로운 스레드를 사용해야합니다. 이렇게하는 것이 최선의 방법 일 수는 없습니다.
private void Form1_Load(object sender, EventArgs e)
{
Thread t = new Thread(new ThreadStart(delegate()
{
this.Invoke(new InvokeDelegate(delegate()
{
Thread t2 = new Thread(new ThreadStart(delegate()
{
ReadXml(path);
}));
t2.Start();
t2.Join();
Bind();
}));
}));
t.Start();
}
* 양식로드시 실행되는 * 유일한 * 코드 인 경우 모든 것이 완벽하고 원활하게 작동해야합니다. 이 시점에서 UI를 차단하는 뭔가가 있습니다. 그것을 확인하십시오 ... – Tigran
** 또는 ** 해당 메소드가 실제로 UI에 데이터를 저장하는 경우 * Bind() 메소드가 표시됩니다 * 차단 호출 일 수 있습니다. – Tigran
그게 내 Form1_Load 이벤트 처리기 프로 시저에만 있습니다. 바인딩() 그냥이 않습니다 : dataGridView1.DataSource = table; –