2014-12-09 2 views
1

나는 현재 데이터로리스트 뷰를 채우는 함수를 가지고있다. 이 함수는 전달 된 매개 변수를 가져옵니다.매개 변수를 백그라운드 작업자에게 전달하려면 어떻게해야합니까?

이제 주 UI 스레드와 다른 스레드에서 listview를 채우고 싶습니다. 그러나 나는 스레드에 매개 변수를 전달하는 방법을 조금 확실하지 않습니다.

+1

다른 스레드에서 ListView를 채울 수 없습니다. –

+0

만약 listview를 채울 수 없다면, 어떻게 함수를 배경 작업자로 바꿀 수 있을까요? – Mattigins

+0

작업자 스레드의 목록보기에 표시 할 데이터를 수집하십시오. 목록보기를 바인딩하거나 채우는 작업은 RunWorkerCompleted 이벤트 처리기에서 수행해야합니다. 너무 오래 걸리면 UI가 크게 파괴되어 수천 개의 항목이있는 목록을 표시하는 것이 지나치게 사용자에게 적대적입니다. –

답변

1

RunWorkAsync를 통해 매개 변수 (개체)로 전달되어야합니다.

위에서 한스가 말한 것처럼 다른 스레드에서 ListView를 채울 수는 없지만. 이것은 "배경 작업자에게 매개 변수를 전달하는 방법"입니다.

+0

그리고 UI 스레드가 아닌 스레드에서 UI 작업 (MessageBox)을하고 있기 때문에 코드에서 크로스 스레드 오류가 발생할 가능성이 높습니다. –

+0

아, 그래. 고맙습니다. 예를 들어 설명해 보았습니다. – Keith

관련 문제