有关CInternetSession和多线程下载的问题
正在写一个小程序,用来模拟google maps或者Yahoo maps的卫片浏览功能。
下载采用了CInternetSession中的OpenURL函数来进行操作。
采用了多线程下载的方式,同时下载 5*5 的图像。多线程采用MFC的消息队列进行同步,就是说每个线程下载完毕后向框架发送一个消息。
基本的功能是实现了,不过有两个致命的问题,请教一下:)
第一个问题:很多情况下,在没有下载完当前所有图像的时候,用户就会进行操作,这样就需要强行关闭正在下载中的线程,而由于采用了发送消息的方式,在线程中分配了内存,TerminateThread会导致内存的泄漏。有什么办法可以关闭线程,又保证不泄漏内存呢?
第二个问题:其实是在上一个问题的基础上的,同样是如果用户在没有下载完当前图像的时候执行操作,会出现OpenURL函数没有反应的情况。我进入到OpenURL函数中,发现执行到InternetOpenUrl函数后,OpenURL函数就没有反应了。这是什么原因呢?是因为强制关闭线程的时候,原有的CInternetSession没有关闭?还是因为连接到服务器的CInternetSession太多了?这些原因都是我瞎猜的,因为OpenURL函数也没有返回什么错误代码,仅仅是完全没有反应了。所以恳请解答!
不好意思,我对网络编程不熟悉,上面的问题不是很专业,请高手解答一下,多谢!