WPF中PropertyChangedEvent中的交叉线程异常

时间:2010-05-14 06:31:55

标签: wpf multithreading wpf-controls

我有一个绑定到自定义集合的ListView。

在运行时,我在ViewModel中的自定义集合中更新了我的实体的某些属性。与此同时,我也在listview中进行自定义排序。

当我点击列表视图的任何列标题时,自定义排序适用。

例如,我每隔5秒更新一次实体的当前日期时间,同时,我正在应用基于DateTime的自定义排序。

(Listview是第三方控制)。

因此,我在同一时间对我的自定义集合执行两项操作。

我是否应该在视图模型中传递我的控件的调度程序并通过UI调度程序调用任何方法(更新我的自定义集合中的任何实体)?

2 个答案:

答案 0 :(得分:0)

如果要更新UI,则必须使用调度程序,没有其他方法可以更新UI。

 Dispatcher.BeginInvoke(DispatcherPriority.Background, 
                        (Action) delegate
                        {
                            //You can update your UI here 
                        });

答案 1 :(得分:0)

您是否仅使用线程更新实体属性?如果是这样,使用调度程序将导致删除使用线程的含义,因为所有操作最终都将由UI线程完成。您可以更好地将排序逻辑放在不同的线程中。不管怎样,有些代码会有所帮助。