Задача параллельной библиотеки INotifyPropertyChanged НЕ генерирует исключение?

У меня есть проект wpf, в котором я использую INotifyPropertyChanged для свойства, которое привязывается к текстовому полю. Я обновляю это значение в другом потоке с помощью задачи (TaskParallelLibrary). Он обновляется правильно и НЕ генерирует исключение. Я думал, что это вызовет исключение, потому что он работает в фоновом потоке, а не в потоке пользовательского интерфейса. Конечно, это вызывает исключение, если я напрямую использую элемент пользовательского интерфейса. Итак, заботится ли механизм привязки INotifyPropertyChanged об автоматической отправке в поток пользовательского интерфейса?

Вот мой код собственности.

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 -

5
задан H.B. 3 November 2011 в 17:39
поделиться