【问题标题】:Internet explorer 11 takes excessively long to shutdownInternet explorer 11 关闭时间过长
【发布时间】:2016-01-19 04:49:38
【问题描述】:

我的 windows MFC 应用程序有一个嵌入的 WebBrowser 控件,它承载一个 Web 应用程序,当用户单击一个通过 javascript window.open() 调用显示弹出窗口的链接时,它会导致 iexplorer.exe 被启动以显示弹出窗口。

当这个弹出窗口关闭时,iexplore.exe 会关闭,但是它需要很长时间才能关闭,如果用户单击链接再次启动弹出窗口,则会显示 javascript 错误:

“已安排系统关闭”,-我认为这是与 ie 关闭有关的通用 COM 错误消息。

在我的测试中,我观察到 Internet Explorer 11 进程 iexplore.exe 最多需要 15 秒才能退出。相比之下,Internet Explorer 8 几乎立即退出。

这可以通过启动 Internet Explorer 11 并打开 taskmgr.exe 以查看启动的两个 iexplore.exe 进程来轻松验证。一个是 64 位主机进程,另一个是托管选项卡内容的 32 位进程。当 Internet Explorer 窗口关闭时,32 位进程会立即退出,但 64 位主机进程会停留几秒钟。

仅当 iexplore.exe 正在关闭时才会出现此错误。如果出现以下情况,则不会发生:

  • 用户等待 iexplore.exe 终止
  • 使用任务管理器杀死 iexplorer.exe
  • 或确保已打开 Internet Explorer 窗口,这样如果弹出窗口关闭,iexplore.exe 不会因为仍在显示窗口而终止。

有人有什么想法吗?

【问题讨论】:

    标签: javascript mfc internet-explorer-11 citrix xenapp


    【解决方案1】:

    这两个注册表项:

    [HKLM\Software\Microsoft\Internet Explorer\Main\FrameShutdownDelay]
    [HKLM\Software\Policies\Microsoft\Internet Explorer\Main\FrameShutdownDelay]
    

    值为 DWORD 1 似乎会阻止 32 位选项卡进程退出 1 分钟,此时 64 位帧主机进程也退出 - 这解决了我们的问题。

    但是,这个密钥是无证的,我只是通过在 iexplore.exe 进程上运行 procmon.exe 才发现的。

    如果您能对此密钥的用途和预期用途做出任何解释,我将不胜感激。

    【讨论】:

    • 其实这是微软支持给我们的解决方案
    • 所以你是说你们将这些值设置为 DWORD 1 并且问题就消失了?我正在遇到这个确切的问题。从您的回答中我不清楚,我想将其设置为 1 吗?听起来你是说这需要 1 分钟,我认为目标是让它更快而不是更慢?
    • 不,你不能让它更快地关机。但是您可以将关闭延迟一分钟,这意味着如果用户关闭然后尝试立即重新打开窗口,您将不会收到错误,这是典型的用户行为。这有意义吗?
    猜你喜欢
    • 1970-01-01
    • 2016-05-09
    • 2014-08-15
    • 2019-11-20
    • 2015-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多