Должен ли я использовать Invoke или SynchronizationContext для обновления элементов управления формы из другого потока?

Попытка обернуть голову обновлением элементов управления пользовательского интерфейса из других потоков.

В настоящее время используется BeginInvoke и, честно говоря, он работает нормально, но я продолжаю слышать о том, как вы можете использовать SynchronizationContext, чтобы делать то же самое.

Что является предпочтительным?

Кроме того, это плохая практика для обновления пользовательского интерфейса из потока? Было бы лучше поднять событие и обработать его в главной форме, или есть и другие предпочтительные способы сделать это?

Извините за несколько субъективный вопрос, но в мире многопоточности есть так много вариантов, и я пытаюсь понять их различия и то, где каждый из них применим, а также лучшие практики для написания читаемого и расширяемого кода на будущее.

Изменить: Также теперь я вижу, что естьTaskScheduler.FromCurrentSynchronizationContext маршрут так же .. так много вариантов x_x

Ответы на вопрос(2)

Ваш ответ на вопрос