WinForms interthread modificação

Sempre que eu quero modificar um winform de outro thread, eu preciso usar

->Invoke(delegate, params)

para que a modificação ocorra no próprio thread do winform.

Para cada função que precisa modificar o GUI, eu preciso de outra função de delegado.

Existe algum esquema que me permita limitar o número de funções de delegado necessárias? Eu tenho uma classe de controlador que lida com o gui inteiro em um ponto, eu pensei em reutilizar delegados, mas cheira mal.

Acho que minha pergunta pode se aplicar a todos os idiomas em que o winform pode ser executado

questionAnswers(4)

yourAnswerToTheQuestion