在论坛和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
已发布我的代码.. –
请帮助...我卡住了,无法继续前进。 –