我试图在delphi中构建一个允许用户使用谷歌地图的系统.一切正常,但我注意到每次创建一个新的TWebBrowser对象并加载处理谷歌地图的javascript时,会生成许多新的线程.
我的问题是,即使web浏览器被销毁(并且它被明确销毁),创建的线程仍然存在.我正在设计这个程序有很长的运行时间和谷歌地图的打开和关闭发生多次,因此,一段时间后,生成了很多线程,并没有终止该程序显着减慢.
有没有办法自己销毁这些线程,或者我做错了什么导致线程持续存在?
我的程序基于以下代码:
const
HTMLStr: AnsiString =
'<html> '+
'<head> '+
'<meta name="viewport" content="initial-scale=1.0, user-scalable=yes" /> '+
'<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"> </script> '+
'<script type="text/javascript"> '+
''+
''+
' var geocoder; '+
' var map; '+
' var trafficLayer;'+
' var bikeLayer;'+
' var markersArray = [];'+
''+
''+
' function initialize() { '+
' geocoder = new google.maps.Geocoder();'+
' var latlng = new google.maps.LatLng(40.714776,-74.019213); '+
' var myOptions = { '+
' zoom: 13, '+
' center: latlng, '+ …
Run Code Online (Sandbox Code Playgroud) 这是我上一个问题的延续.在那个问题中,我展示了一个涉及TWebBrowser生成线程的问题,这些线程在浏览器被破坏后仍然存在.虽然没有人可以提供问题的解决方案,但有人认为问题可能是一个不可修复的问题(TWebBrowser组件本身存在缺陷).
因此我尝试下载并使用Delphi Chromium Embedded Framework.我下载了组件并将它们添加到Delphi中,将一个组件添加到一个新表单并尝试运行该程序,此时它会抛出一个CPU断点
5264DF81 6A01 push $01
模块加载:icudt46.dll.没有调试信息.基地址:562C0000美元.处理DCEFTestRun.exe(3080)
没有错误消息,但是当程序手动继续时它会关闭.我以前没有DCEF的经验,也没有任何使用第三方组件的经验,DCEF网站非常缺乏文档.
我想我要求的最简单的事情就是下载/安装什么以及让Chromium Components工作在哪里的简单演练(非常基础).
先感谢您.
delphi ×2
chromium ×1
google-maps ×1
iwebbrowser2 ×1
javascript ×1
tchromium ×1
twebbrowser ×1