※※一个很诡异的问题!谁能解答?※※(200分)

  • 主题发起人 主题发起人 duncan98
  • 开始时间 开始时间
D

duncan98

Unregistered / Unconfirmed
GUEST, unregistred user!
我正在编的多线程程序里,
每个线程都用WinInet 的HttpQueryInfo查看某一些网页的信息。
结果前面一些线程都没有问题,可是后面的一些线程的成功率就明显的下降了。
都最后几乎每个URL都是失败的。
不知什么原因。
高手们帮我想想。
//bow
 
有没有用InternetCloseHandle()?多线程中是否注意了free的问题?
贴出代码来看看!
Wininet定义——http://doc.ddart.net/msdn/header/include/wininet.h.html
 
这是我的源码:(每个线程里都一样。)
try
mSession:= InternetOpen('MicroSoft Internet Explorer',INTERNET_OPEN_TYPE_PRECONFIG,nil,nil,0);
mfile:=InternetOpenURL(mSession,pChar(mURL),nil,0,0,0);
mStatus:= HttpQueryInfo(mfile, HTTP_QUERY_CONTENT_TYPE, @strBuffer, WLength, Reserved);
if not mStatus then
//如果下载不成功
begin
mInfo:='网络出错了:'+mURL+#13#10;
synchronize(updateInfo);
end
else
.....
finally
InternetCloseHandle(mfile);
InternetCloseHandle(mSession);
end;

关于free,我把线程onTerminate与自己编的procedure联系起来,
在那里LockList/remove(sender)/unLockList。这样有问题吗?
 
刚才改了一些小毛病,
重试了一遍,
结果还是老样子。
sigh....
没法子了。
 
没碰过
听一听
 
呵呵,看一看。
 
我想问一句,你用的什么服务器?tomcat吗?
如果是,我现在遇到了一个问题就是HttpQueryInfo返回信息好像与tomcat版本有关,
在tomcat4.0里,如果没有那一页HttpQueryInfo就返回false,可是在tomcat5.0里就返回true ,我觉得它把错误信息当成了那一页的内容。不知道是不是?
 
你不是一次开几百个吧???
 
后退
顶部