Como bloquear a interface do usuário do Winforms enquanto o thread de segundo plano está em execução

Eu herdei um aplicativo WinForms que faz muitas chamadas de longa execução no servidor de aplicativos a partir do thread da interface do usuário, para que a interface do usuário permaneça sem resposta, inutilizável e não fechada por algum tempo. (O que me faz realmente irAAAAAAAAARGH!)

Eu planejo mover as chamadas do servidor para um encadeamento em segundo plano e ter a interface do usuário desabilitada - mas móvel e fechada - enquanto o encadeamento em segundo plano faz seu trabalh

Então, qual seria a melhor maneira de inibir a entrada do usuário no meu aplicativo? Estou pensando na linha de "diálogo de progresso modal", mas eu preferiria uma solução que não me force a lançar visuais na cara do usuário (algumas operações do servidor são executadas em menos de 500ms, portanto, uma caixa de diálogo énã ótimo ...

Existe alguma maneira no WinForms para impedir que o usuário inicie ações ou altere dados no aplicativo enquanto deixa passar algumas coisas selecionadas (redimensionar, mostrar, ocultar e família e o usuário fechar a janela)? Eu prefiro uma maneira que não me faça acessar todos os elementos da interface do usuário nos meus formulários e defina-os como desativados ... existem muitos deles e esse aplicativo realmente tem um "hackeado no designer da interface do usuário até mostrar coisas chamativas "estilo do código fonte. Não há como refatorar TODAS as coisas fedorentas até a data de lançamento ...

Ah, a propósito, este aplicativo vive no quadro .net 2

questionAnswers(6)

yourAnswerToTheQuestion