清除.Net 3.5 Compact Framework中的WebBrowser控件缓存

时间:2015-11-30 23:09:15

标签: c# caching windows-ce

我需要为旧的Windows CE设备创建一个Kiosk应用程序。

该应用程序使用WebBrowser Control显示使用内置条形码阅读器扫描的产品信息。

当设备处于空闲状态时,产品广告会显示在此WebBrowser Control

private void Browser_Load(string documentText)
{
    //Program.ClearBrowserCache();
    pnlBrowser_Web.DocumentText = documentText;
    pnlBrowser_Web.Update();
    pnlBrowser.BringToFront();
    pnlHeader_txtBarcode.Focus();
    _browseStart = DateTime.Now;
}

问题是,在它停留一两天后加载并显示产品广告时,内存耗尽 - 显然是因为浏览器从未转储其缓存。

Microsoft's KB326201介绍如何清除WebBrowser Control的缓存,但指定的 CallingConvention CallingConvention.StdCall ,但全部。 NET CF有 CallingConvention.Winapi

我尝试在注释掉的部分“ClearBrowserCache()”中使用 Winapi ,但下面的while loop永远不会退出(没有错误,但它永远不会退出):

while(true)
{
    // Delete a particular Cache Group.
    returnValue = DeleteUrlCacheGroup(groupId, CACHEGROUP_FLAG_FLUSHURL_ONDELETE, IntPtr.Zero);
    if (!returnValue && ERROR_FILE_NOT_FOUND == Marshal.GetLastWin32Error())
    {   
        returnValue = FindNextUrlCacheGroup(enumHandle, ref groupId, IntPtr.Zero);
    }

    if (!returnValue && (ERROR_NO_MORE_ITEMS == Marshal.GetLastWin32Error() || ERROR_FILE_NOT_FOUND == Marshal.GetLastWin32Error()))
        break;
}

有没有人知道在Windows CE WebBrowser控件上清除缓存的方法?

0 个答案:

没有答案