Eu não uso o C # mas, em geral, a interface do usuário de um aplicativo pode ser interrompida quando o código de atualização da interface do usuário não é separado em um thread separado dos threads usados para o E / S da rede . Nesse caso, uma resposta lenta a uma chamada de rede pode fazer com que a interface do usuário pare de responder porque a chamada de rede está bloqueando o thread da interface do usuário. Isso significa que os eventos da interface do usuário (pressionamentos de teclas, cliques do mouse) são bloqueados.
IO, como IO de rede, pode ser escrito em estilos de bloqueio ou não bloqueio. Usar um estilo sem bloqueio pode atenuar os efeitos de não ter código de atualização da interface do usuário em seu próprio segmento.
Portanto, uma combinação de um aplicativo mal escrito e uma rede lenta ou cliente mal configurado (por exemplo, endereço incorreto para o servidor) pode causar isso.
Eu diria que a interface do usuário de um aplicativo bem escrito não deve ser interrompida a menos que a CPU esteja a 100% de utilização.
No entanto, isso é especulação. As chances de qualquer palpite estar correta são pequenas. Para obter melhores respostas, talvez seja necessário fornecer mais detalhes sobre o aplicativo (nome, autor, se o software de varejo) e exatamente quando e como a interface do usuário "trava".