代码之家  ›  专栏  ›  技术社区  ›  Chris

螺纹安全、列表、装订和WPF

  •  0
  • Chris  · 技术社区  · 14 年前

    我有一个绑定到集合的WPF列表视图( List<T>

    NotifyPropertyChanged ? 是 通知属性已更改 ListView 集合已更新,但在绑定更新时,我可能正在其他线程中修改集合,这将引发异常或使程序崩溃。

    在这种情况下,实现线程安全的最佳方法是什么?

    2 回复  |  直到 14 年前
        1
  •  1
  •   user1228 user1228    14 年前

    INotifyPropertyChanged不是线程安全的,它会阻止调用线程。

    您可以1)准备好所有内容,然后将其传递到UI线程,然后更新UI。或者,您可以2)实现INotifyPropertyChanged并使该事件的触发始终发生在UI线程上,或者3)您可以执行许多不同的操作之一。

    不幸的是,框架中没有任何东西能为您做到这一点。

        2
  •  1
  •   ggarber    14 年前

    void ThreadProc()
    {
       window.Dispatcher.Invoke(() => {
          //UpdateList
       });
    }