簡體   English   中英

MFC CDHtmlDialog加載頁面多次后掛起

[英]MFC CDHtmlDialog hangs after loading a page many times

標題說明了一切。 工作數小時或數天后,我在信息亭應用程序中掛了。 我將其提煉到CDhtmlDialog的Navigate()或它所做的任何事情。

Windows 10,Visual Studio 2013社區版,共享DLL中的MFC

在具有基於CDHtmlDialog的模式對話框的,全新生成的基於MFC對話框的應用程序中重現了該問題。

在該對話框中,我要做的只是設置一個計時器,該計時器每秒調用一次以重新加載頁面。 這是計時器例程。

void CDHtmlStressDlg::OnTimer(UINT nIDEvent)
{
  Navigate(L"C:\\temp\\html\\test.html");
}

經過幾百到幾千次加載(不確定)后,整個UI會凍結。 如果我嘗試在窗口中發布消息(這是我在舊應用中嘗試過的操作)-我收到錯誤1816-(配額不足)。 不知道它是否相關,只是我觀察到的一件事。

這是掛起后的線程轉儲(請注意,我自己沒有創建任何線程,這是所有MFC的東西):

Not Flagged     764 0   Worker Thread   msvcrt.dll!_threadstartex   jscript9.dll!Event::Wait    Normal
Not Flagged     6368    0   Main Thread Main Thread mfc120ud.dll!51fbbc54   Normal
Not Flagged     7228    0   Worker Thread   ntdll.dll!TppWorkerThread   ntdll.dll!_NtWaitForWorkViaWorkerFactory@20 Normal
Not Flagged     7936    0   Worker Thread   ntdll.dll!TppWorkerThread   ntdll.dll!_NtWaitForWorkViaWorkerFactory@20 Normal
Not Flagged     4284    0   Worker Thread   ntdll.dll!TppWorkerThread   ntdll.dll!_NtWaitForWorkViaWorkerFactory@20 Normal
Not Flagged     7844    0   Worker Thread   msvcrt.dll!_threadstartex   mshtml.dll!Memory::Recycler::ThreadProc Below Normal
Not Flagged     7252    0   Worker Thread   mshtml.dll!CExecFT::StaticThreadProc()  mshtml.dll!Memory::HeapBucketT<Memory::SmallNormalHeapBlockT<SmallAllocationBlockAttributes> >::SweepBucket Normal
Not Flagged     7172    0   Worker Thread   ntdll.dll!TppWorkerThread   ntdll.dll!_NtWaitForWorkViaWorkerFactory@20 Normal
Not Flagged     7176    0   Worker Thread   mshtml.dll!CExecFT::StaticThreadProc()  mshtml.dll!CTimerMan::ThreadExec    Normal
Not Flagged     6252    0   Worker Thread   ntdll.dll!TppWorkerThread   ntdll.dll!_NtWaitForWorkViaWorkerFactory@20 Normal
Not Flagged     7812    0   Worker Thread   winmm.dll!mciwindow win32u.dll!_NtUserGetMessage@16 Highest
Not Flagged >   5836    0   Worker Thread   mshtml.dll!CExecFT::StaticThreadProc()  combase.dll!CCliModalLoop::BlockFn  Normal
Not Flagged     404 0   Worker Thread   mshtml.dll!CExecFT::StaticThreadProc()  combase.dll!CCliModalLoop::BlockFn  Normal
Not Flagged     6920    0   Worker Thread   msvcrt.dll!_threadstartex   jscript9.dll!Recycler::ThreadProc   Below Normal

這是我正在加載的html

<!DOCTYPE html>
<html>
<head>
    <style>
        body {
            overflow: hidden; /*suppress scroll bars*/
        }

        .box {
            display: inline-block;
            border-spacing: 0;
            border-collapse: collapse;
            font-family: Arial;
            transform: rotate(90deg);
            display: inline-block;
        }

        .line1 {
            font-size: 210%; 
            color: Coral;
            width: 1100px;
            transform: translate(45%, 1120%); 
            text-align: center;
        }

        .pic1 {            
            width: 230px;
            transform: translate(0%, -30px);
        }
    </style>
</head>

<body id=CHtmlMirror bgcolor=black>

    <div class="box">
        <div class="line1">Test Line to load</div>
    </div>

    <table border=0 class="pictureTable">
        <tr><td><p><img class="pic1" src=file://c:/temp/icons/pic1.jpg></p></td></tr>
    </table>

</body>
</html>

僅當還從外部應用程序(或線程,無關緊要)修改正在加載的HTML頁面時,才可以重現此問題。 在這種情況下,沒有加載錯誤-只是“終端情況” UI凍結。

要解決此問題,我們確保在文件開始加載時沒有人可以觸摸該文件。 一旦保證了這一點,就無法復制該掛起。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM