locked
Как обеспечить доступ к WPF эмелементам из другого потока? RRS feed

  • Общие обсуждения

  • Как и во многих подсистемах для написания пользовательского интерфейса(UI frameworks) таких как Windows Forms, WPF использует однопоточную модель, что означает что вы можете получить доступ только к определенному производному DispatcherObject только из потока который создал его. В Windows Forms каждый элемент управления будет выполнять ISynchronizeInvoke, этот интерфейс предоставляет набор методов, таких как Invoke и BeginInvoke, что бы обеспечить общий договор синхронизации потоков который мы можем использовать для доступа из других потоков. В WPF такое же положение вещей, но эти операции упакованы в класс называемый Dispatcher, Dispatcher это способ  WPF реализации этой модели синхронизации потоков.

    Следующий пример как изменить в textBox.Text свойства, когда вызов происходит из другого потока:
    // Resets textbox text from another thread
    
    textBox.Dispatcher.Invoke(DispatcherPriority.Background, new
     Action(() => 
    { 
        textBox.Text = "New text"
    ;
    }));
    
    

    Для связи [Mail]
    • Перемещено Tagore Bandlamudi 2 октября 2010 г. 23:04 MSDN Forums consolidation (От:Разработка Windows-приложений)
    17 марта 2010 г. 11:40
    Модератор