2012-02-21 3 views
0

저는 백그라운드에서 devexpress GridControl을 채우려고합니다 (빠른 프로세스가 아닙니다). 나는 이런 식으로 작업을 수행합니다백그라운드에서 데이터 그리드를 채우십시오.

... 
CreateGrid(); 
ShowMessageInsteadOfGridControl; 
... 
FillGrid(dataGrid, other UI params); 
... 

쓰기 데이터를 그리드에 : 나는 FillData를 호출 할 때

private void FillGrid(GridControl data, ...); 
{ 
    Task.Factory.StartNew(() => 
           { 
             Application.Current.Dispatcher.Invoke(new Action(() => FillData(gridControl,UIparamns)), 
                 DispatcherPriority.Background); 
            }).ContinueWith(c => HideUserMessage(UIparamns)); 
} 

, 그것은 UI 동결됩니다. Grid가 UI에서 채워지고 "호출하는 스레드가이 객체에 액세스 할 수 없으므로"통상적 인 Task를 사용할 수 없습니다.

UI를 고정하지 않고 백그라운드에서 이러한 데이터 전송 프로세스를 만드는 방법은 무엇입니까?

답변

0

발송자 호출 호출이 UI 스레드에서 다시 모든을두고, 당신은 백그라운드에서 수행 할 수 있습니다 부품에 같은 정말는 UI 스레드에서 수행해야하는 사람들을, 당신의 작업을 분할해야 항목을 추가하면 해당 작업을 운영자에게만 전달합니다.

(DispatcherPriority.Background) 우선 순위가 높은 다른 항목이 먼저 실행되고 백그라운드 스레드와는 아무런 관련이 없다는 것을 의미하기 때문에 UI 스레드의 디스패처를 호출 할 때마다 UI- 스레드 조만간)

관련 문제