在論壇和MSDN上,他們已經給出了一個清晰的方法來使用Dispatcher.Invoke從不同線程訪問UI控件。但是,在UI線程中,如何訪問在不同線程上創建的DataGrid的WPF組件?如何訪問在UI線程中的不同線程上創建的DataGrid?
在我的情況下,我開始一個線程來處理一個漫長的過程。在這個線程中,我創建一個DataTable,並將其綁定到也在此線程中創建的DataGrid。
現在,當顯示DataGrid的時候,我適當地調用UI控件上的Dispatcher.Invoke。但是,當我嘗試訪問我的UI線程中的DataGrid時,出現異常 - 調用線程無法訪問此對象,因爲不同的線程擁有它。
任何建議,請..
public void AddResultsController(ResultsController controller)
{
NewResultsControllerDisplayDelegate newControllerDisplayDelegate = new NewResultsControllerDisplayDelegate(NewResultsControllerDisplay);
this.docManager.Dispatcher.BeginInvoke(newControllerDisplayDelegate, System.Windows.Threading.DispatcherPriority.Normal, controller);
}
delegate void NewResultsControllerDisplayDelegate(ResultsController controller);
private void NewResultsControllerDisplay(ResultsController controller)
{
Grid grd = new Grid();
grd.Children.Add(controller.SummaryDataGrid); // Exception is thrown here
}
在我的後臺線程我叫......
m_mainWindow.AddResultsController(m_controller);
我想使用Dispatcher.Invoke()是正確的做法。 你可以發佈你的代碼? – Thinhbk
已發佈我的代碼.. –
請幫助...我卡住了,無法繼續前進。 –