2012-02-21 16 views
0

デベロッパーGridControlをバックグラウンドで塗りつぶしています(クイックプロセスではありません)。バックグラウンドでデータグリッドを塗りつぶす

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

グリッド内の書き込みデータ:

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

私はFillDataを呼び出すと、それはUIの凍結を引き起こし、私はこのようにそれを行います。グリッドはUIから塗りつぶされているので、「呼び出しスレッドはこのオブジェクトにアクセスできません」という通常のタスクは使用できません。

UIをフリーズすることなく、バックグラウンドでこのようなデータ転送プロセスを作成するにはどうすればよいですか?

答えて

0

ディスパッチャがコールを呼び出すには、バックUIスレッド上すべてを置き、あなたがバックグラウンドで行うことができる部分にあなたの操作を分割し、が本当には次のように、UIスレッド上で実行する必要があるものをする必要がありますアイテムを追加すると、これらの操作をディスパッチャに渡すだけです。

DispatcherPriority.Backgroundは優先度の高い他の項目が最初に実行されることを意味し、これはバックグラウンドスレッドとは関係ありません。UIスレッドのディスパッチャを呼び出すたびに、遅かれ早かれスレッド)

関連する問題