Ao fazer o programa de atualização automática, você deseja evitar alguns problemas e usar HttpWebRequest e HttpWebResponse diretamente para baixar arquivos atualizados do servidor. Preste atenção ao fluxo de resposta Close ao usá-lo:
Depois de usar HttpWebRequest.GetResponse() para obter a interface HttpWebResponse, lembre-se de chamar HttpWebResponse.close para fechar o fluxo.
Se você usar HttpWebResponse.GetResponseStream() para obter o fluxo de resposta, use o método Close deste Stream para fechá-lo.
Se você usar StreamReader.ReadToEnd() para ler o texto do fluxo de resposta, o fluxo será fechado automaticamente após a leitura do conteúdo.
O MSDN descreve o método HttpWebResponse.close da seguinte maneira:
O método Close fecha o fluxo de resposta e libera a conexão com o recurso para reutilização por outras solicitações.
Você deve chamar o método Stream.Close ou HttpWebResponse.Close para fechar o fluxo e liberar a conexão para reutilização. Não é necessário chamar Stream.Close e HttpWebResponse.Close ao mesmo tempo, mas isso não causará erro. A falha ao fechar o fluxo pode fazer com que o aplicativo fique sem conexões.
O limite de conexão parece ser no máximo 2. Não sei se é um limite do IIS ou um limite do HttpWebRequest local.