繁体   English   中英

从Visual Studio调试停止的Excel僵尸进程

[英]Excel zombie process on debugging stop from Visual Studio

在应用程序调试期间(Visual Studio 2012,C#,Excel COM Interop)我通常会从Visual Studio中停止应用程序(异常,或者逻辑被破坏)。 这从应用程序Excel实例开始挂起在内存中。 是的,我可以从任务管理器中删除它,但它非常烦人。 有没有办法在Excel和我的应用程序进程之间“自定义”依赖关系?

我在我的个人资料中定义了一个Powershell函数(C:\\ Users \\ {userName} \\ Documents \\ WindowsPowerShell \\ Microsoft.PowerShell_profile.ps1)

function Kill-Excel {
    $excelInstances = @(Get-Process | Where { $_.Name -Eq "Excel" }).Count
    if ($excelInstances -Eq 0) {
        "Excel not running"
    }
    else {
        if ($excelInstances -Eq 1) {
            "Killing 1 instance of Excel"
        }
        else {
            "Killing $excelInstances instances of Excel"
        }
        Get-Process | Where { $_.Name -Eq "Excel" } | Kill
    }
}

然后我只需在Powershell提示符下键入Kill-Excel ,它会杀死我机器上隐藏和可见的所有 Excel实例。

请注意,这将删除您打开的所有Excel实例, 而不提示保存

使用Excel COM互操作非常棘手。 首先,您需要让Excel关闭自己,但在此之前,您需要确保已正确清理所有COM对象。

我不确定是否有一种简单的方法可以在应用程序关闭时将其关闭,而无需手动查杀,如果您不小心,可能会占用多个实例。 我实际上建议不要在中间停止应用程序并且有一种优雅地尝试关闭excel实例的方法,这样你就可以确保它正常工作,否则你很有可能在部署后看到这种行为。

这篇文章可能很有用: 当父进程被杀死时杀死子进程

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM