Должен ли я использовать Invoke или SynchronizationContext для обновления элементов управления формы из другого потока?
Попытка обернуть голову обновлением элементов управления пользовательского интерфейса из других потоков.
В настоящее время используется BeginInvoke и, честно говоря, он работает нормально, но я продолжаю слышать о том, как вы можете использовать SynchronizationContext, чтобы делать то же самое.
Что является предпочтительным?
Кроме того, это плохая практика для обновления пользовательского интерфейса из потока? Было бы лучше поднять событие и обработать его в главной форме, или есть и другие предпочтительные способы сделать это?
Извините за несколько субъективный вопрос, но в мире многопоточности есть так много вариантов, и я пытаюсь понять их различия и то, где каждый из них применим, а также лучшие практики для написания читаемого и расширяемого кода на будущее.
Изменить: Также теперь я вижу, что естьTaskScheduler.FromCurrentSynchronizationContext
маршрут так же .. так много вариантов x_x