我需要为旧的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;
}