Какой Диспетчер использовать? Окно или контроль? - PullRequest
2 голосов
/ 11 октября 2009

До сих пор, когда я хотел обновить элемент управления пользовательского интерфейса из потока, не являющегося пользовательским интерфейсом, я использовал следующий синтаксис:

Dispatcher.Invoke(DispatcherPriority.Normal,
                  new Action(()=>Label1.Content="New Content"));

Сейчас я читаю об этом и продолжаю находить следующий синтаксис:

Label1.Dispatcher.Invoke(//same arguments;

Последний лучше? Почему я выбрал один метод перед другим?

1 Ответ

6 голосов
/ 11 октября 2009

Я бы лично использовал один для самого элемента управления, так как тогда вам не нужно беспокоиться даже о знании содержащего окна.

Однако я бы не ожидал, что это будет иметь значение - по крайней мере в обычном Win32 все элементы управления в одном окне должны «принадлежать» одному потоку пользовательского интерфейса. Я ожидаю, что это перенесет и на WPF. (В некоторых случаях это не применимо, когда одно окно перерисовывается в другом, но это довольно редко.)

...