Как SynchronizationContext и TaskScheduler связаны с await? Рассмотрите возможность написания приложения пользовательского интерфейса с расширением Button. Нажав на кнопку Button, мы хотим загрузить некоторый текст с веб-сайта и установить его как Button's Content. Доступ к Button должен быть возможен только из потока пользовательского интерфейса, которому он принадлежит, поэтому, когда мы успешно загрузили новый текст даты и времени и хотим сохранить его обратно в Button, Content нам нужно сделать это из потока, которому принадлежит элемент управления. Если мы этого не сделаем, мы получим исключение вроде: Если бы мы записывали это вручную, мы могли бы использовать, SynchronizationContext как показано ранее, для маршалирования настройки back Content в исходный контекст, например, с помощью TaskScheduler: или используя SynchronizationContext напрямую: Однако оба этих подхода явно используют обратные вызовы. Вместо этого мы хотели бы написать код естественным образом с помощью async/aw