solucionando processos persistentes do Excel em C# Applications
você implementou uma estratégia robusta de release-desponha-collect-wait para gerenciar objetos COM, mas seu processo do Excel permanece ativo após o fechamento do aplicativo. Isso aponta para referências remanescentes aos objetos COM dentro do seu aplicativo C#.
Um culpado comum está referenciando implicitamente os membros do objeto COM sem atribuição de variável explícita. Considere o exemplo a seguir usando as planilhas
objeto:
excelApp.Worksheets.Open(...);
Esta linha aparentemente inócua cria uma referência oculta às planilhas
A solução está na atribuição de variável explícita e na versão subsequente de objetos COM:
worksheets Sheets = Excelapp.worksheets; Folha de planilha = sheets.open (...); // ... seu código ... Marshal.releasecomObject (folha); Marshal.releasecomObject (folhas);
Worksheets sheets = excelApp.Worksheets;
Worksheet sheet = sheets.Open(...);
// ... your code ...
Marshal.ReleaseComObject(sheet);
Marshal.ReleaseComObject(sheets);
prática recomendada: evite acesso com objeto com prenda
;
Excelapp.worksheets.open (...);sempre opte pelo método de atribuição de variável explícita demonstrado acima.
aderindo a essas práticas recomendadas, você gerenciará efetivamente a vida útil do objeto, garantindo que o processo do Excel termine de maneira limpa no fechamento do aplicativo.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3