【发布时间】:2012-05-11 11:26:18
【问题描述】:
我在这里遇到了一个新问题。我有一个 MainWindow,其中是一个 ContentGrid,这是一个 Frame。现在我创建了不同的页面,可以在这个“内容区域”中显示。在其中一个页面中,有一个绑定到 CollectionViewSource 的 Datagrid,其中 Source 是一个数据库(通过 EntityFramework)。现在,当此数据库表发生更改时(通过 ServiceBroker 和 SQLDependency 解决,触发工作正常)Datagrid 必须更新。 现在的问题: “Dependency_OnChange”事件在 MainWindow-Thread 中工作。当我尝试访问页面的 CollectionViewSource 以更新它(cvs.View.Refresh)时,我得到一个异常,因为另一个拥有此 CVS 的线程,这是不可能的。
我已经尝试过不同的调度,例如:
Application.Current.Dispatcher.Invoke((Action)(()=>
{
cvs.Source = _db.Table.OrderByDescending(nr => nr.Date).Take(200);
cvs.View.Refresh();
}));
这个代码块没有带来异常,但我也不会更新用户界面......它似乎什么都不做。
谁能帮帮我?
【问题讨论】:
标签: wpf multithreading dispatch