【发布时间】:2011-11-03 17:33:42
【问题描述】:
我有一个 wpf 项目,我在绑定到文本框的属性上使用 INotifyPropertyChanged。我正在使用任务(TaskParallelLibrary)在不同的线程上更新这个值。它已正确更新并且不会引发异常。我在想它会抛出异常,因为它在后台线程而不是 UI 线程上运行。当然,如果我直接使用 UI 元素,它会引发异常。那么,INotifyPropertyChanged 绑定机制是否负责自动调度到 UI 线程?
这是我的属性代码。
private string _textProperty = "";
public string TextProperty
{
get
{
return _textProperty;
}
set
{
if (_textProperty != value)
{
_textProperty = value;
NotifyPropertyChanged("TextProperty");
}
}
}
我的任务创建是
var task = new Task(() =>
{
TextProperty = "ABCD"; // Works.
// txtBox.Text = "ABCD"; // Throws an exception.
});
task.Start();
XAML 中的文本框是<TextBox Name="txtBox" Text="{Binding TextProperty}"/>
【问题讨论】:
标签: wpf inotifypropertychanged task-parallel-library