"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que meu processo do Excel persiste depois de fechar meu aplicativo C#, mesmo com uma estratégia de liberação-coleta-vidraça?

Por que meu processo do Excel persiste depois de fechar meu aplicativo C#, mesmo com uma estratégia de liberação-coleta-vidraça?

Postado em 2025-03-23
Navegar:498

Why Does My Excel Process Persist After Closing My C# Application, Even With a Release-Dispose-Collect-Wait Strategy?

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: atribuição de variável explícita e release

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. 
Tutorial mais recente Mais>

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