Devo usar Invoke ou SynchronizationContext para atualizar os controles de formulário de outro threa

Tentando entender a atualização dos controles da interface do usuário de outros thread

Atualmente, uso o BeginInvoke e, honestamente, está funcionando bem, mas continuo ouvindo sobre como você pode usar o SynchronizationContext também para fazer a mesma cois

Qual é o preferido?

Além disso, é uma prática recomendada atualizar a interface do usuário a partir de um thread? Seria melhor criar um evento e ter a forma principal para lidar com isso ou existem outras maneiras preferíveis de fazer isso também?

Desculpe a questão um tanto subjetiva, mas há muitas opções no mundo do encadeamento e estou tentando entender suas diferenças e onde cada uma delas é aplicável, juntamente com as práticas recomendadas para escrever código legível e extensível para o futur

Edit: Agora também vejo que há oTaskScheduler.FromCurrentSynchronizationContext rota também .. Tantas opções x_x

questionAnswers(2)

yourAnswerToTheQuestion