sando a declaração em torno do formulário de diálogo para garantir a coleta de li
Temos um aplicativo Windows Forms que contém milhares de formulário
Muitos destes são exibidos temporariamente como caixas de diálogo através do método ShowDialog (
Esta aplicação existe há anos e descobrimos que muitos dos formulários não estão sendo coletados em tempo hábil devido a vários vazamentos de recursos no formulário ou aos controles que ele us
Especificamente, encontramos exemplos de recursos GDI + que não estão sendo descartados adequadamente, embora possa haver outros tipos de vazamentos de recursos que ainda não foram caracterizado
Embora a maneira correta de resolver isso seja obviamente passar por todas as formas e todos os controles e eliminar todos os problemas de recursos. Isso levará algum tempo para ser realizad
omo alternativa de curto prazo, descobrimos que chamar Dispose () explicitamente no formulário parece iniciar o processo de coleta de lixo, e o formulário e seus recursos são desalocados imediatament
Minha pergunta é se seria uma solução razoável para agrupar o bloco ShowDialog () de cada formulário em uma instrução using, para que Dispose () seja chamado depois que o formulário for exibido, e isso também seria uma boa prática para instituir em geral?
Por exemplo, altere o código existente a partir disso:
public void ShowMyForm()
{
MyForm myForm = new MyForm();
myForm.ShowDialog();
}
Para isso
public void ShowMyForm()
{
using (MyForm myForm = new MyForm())
{
myForm.ShowDialog();
}
}
Em nossos testes, o método Dispose () do MyForm nunca é chamado para o primeiro exemplo, mas é chamado imediatamente para o segundo exempl
Parece uma abordagem razoável como solução alternativa de curto prazo enquanto passamos o tempo rastreando cada um dos problemas específicos de recursos?
xistem outras abordagens que poderíamos considerar para uma solução alternativa de curto prazo e / ou metodologias para identificar e resolver esses tipos de problemas de recurso