C# 从后台线程更新绑定属性
我有一个绑定到ViewModel中属性的WPF控件。令我惊讶的是(因为这看起来不像是WPF的一个广为人知的特性),从后台线程更改绑定属性似乎没有问题。我的UI更新没有例外。为什么会这样?从后台线程更新绑定属性时是否存在任何性能问题或任何其他限制?WPF会自动确保在主线程上更新绑定C# 从后台线程更新绑定属性,c#,wpf,multithreading,data-binding,C#,Wpf,Multithreading,Data Binding,我有一个绑定到ViewModel中属性的WPF控件。令我惊讶的是(因为这看起来不像是WPF的一个广为人知的特性),从后台线程更改绑定属性似乎没有问题。我的UI更新没有例外。为什么会这样?从后台线程更新绑定属性时是否存在任何性能问题或任何其他限制?WPF会自动确保在主线程上更新绑定 没有任何表现上的成功。如果有的话,最好在后台线程上进行属性更新。将更新发送到主线程将增加在那里完成的工作量。您将同时更新视图和ViewModel,而不仅仅是视图。这种差异通常应该可以忽略不计,但如果大量更新发生得很快,
没有任何表现上的成功。如果有的话,最好在后台线程上进行属性更新。将更新发送到主线程将增加在那里完成的工作量。您将同时更新视图和ViewModel,而不仅仅是视图。这种差异通常应该可以忽略不计,但如果大量更新发生得很快,则可能会导致UI的响应速度更快地降低。WPF会自动确保在主线程上更新绑定
没有任何表现上的成功。如果有的话,最好在后台线程上进行属性更新。将更新发送到主线程将增加在那里完成的工作量。您将同时更新视图和ViewModel,而不仅仅是视图。这种差异通常可以忽略不计,但如果大量更新快速发生,则可能会导致UI的响应速度更快地降低。这是因为
WPF
负责将绑定的数据编组到UI线程。
据我所知,这只适用于标量数据。对于集合,您必须注意在非UI线程和UI线程之间正确管理它
没有明显的开销,因为最后它应该做与多线程相同的事情(可能是以稍微优化的方式) 这是因为
WPF
负责将绑定的数据编组到UI线程。
据我所知,这只适用于标量数据。对于集合,您必须注意在非UI线程和UI线程之间正确管理它
没有明显的开销,因为最后它应该做与多线程相同的事情(可能是以稍微优化的方式) 视情况而定
对于针对实现INotifyPropertyChanged的属性的绑定,它仅“自动”执行此操作(IIRC)。DependencyProperties和DependencyObjects具有线程关联性,如果您尝试从另一个线程更新它们,它们将抛出
绑定类有一个名为的属性,在某些特殊情况下,当从另一个线程更新属性时,该属性会有所帮助,以便更新不会阻塞UI。直到你真正需要它时,你才真正需要它。这要看情况而定
对于针对实现INotifyPropertyChanged的属性的绑定,它仅“自动”执行此操作(IIRC)。DependencyProperties和DependencyObjects具有线程关联性,如果您尝试从另一个线程更新它们,它们将抛出
绑定类有一个名为的属性,在某些特殊情况下,当从另一个线程更新属性时,该属性会有所帮助,以便更新不会阻塞UI。在您真正需要它之前,您并不真正需要它。这就是为什么在可能的情况下,绑定要优于使用调度程序的原因之一。这可能是在主UI线程上调用Invoke来更改UIT的原因之一。这可能是在可能的情况下,绑定要优于使用调度程序的原因之一。这可能是在主UI线程上调用Invoke来更改UIT的原因之一用户界面