大家都进来看看!!!
UINT DownWorker(LPVOID lpParam)
{
::WaitForSingleObject(hEvent1,INFINITE);
nLimit1--;
::SetEvent(hEvent1);
CString strContent;
CString strLine;
CInternetSession session;
CHttpFile *pFile=NULL;
addr tag;
TRACE("\n下面调用Queue.DeQueue(tag)\n");
if(!Queue.DeQueue(tag)) //任务出队
{
TRACE("\n调用Queue.DeQueue(tag)完毕(w)\n");
TRACE("\n线程down结束\n");
::WaitForSingleObject(hEvent1,INFINITE);
nLimit1++;
::SetEvent(hEvent1);
return 2;
}
TRACE("\n调用Queue.DeQueue(tag)完毕(r)\n");
try
{
// 连接到指定URL
pFile = (CHttpFile*) session.OpenURL(tag.strUrl);
}
catch (CMemoryException* pException)
{
// 如果有错误的话,置文件为空
pFile = NULL;
pException->Delete();
::WaitForSingleObject(hEvent1,INFINITE);
nLimit1++;
::SetEvent(hEvent1);
return 1;
}
catch (CInternetException* pException)
{
// 如果有错误的话,置文件为空
pFile = NULL;
pException->Delete();
::WaitForSingleObject(hEvent1,INFINITE);
nLimit1++;
::SetEvent(hEvent1);
return 1;
}
catch(CException *pException)
{
pFile = NULL;
pException->Delete();
::WaitForSingleObject(hEvent1,INFINITE);
nLimit1++;
::SetEvent(hEvent1);
return 1;
}
catch(...)
{
int nError=::GetLastError();
TRACE("\nThe Error num is %d\n",nError);
}
if(pFile!=NULL)
{
while(pFile->ReadString(strLine))
{
strLine+='\n';
strContent+=strLine;
}
// conBuffer.Write(tag.strUrl,tag.strTitle,strContent,tag.nTaskNum,tag.Mark);
TRACE("\n已经存完了\n");
// ::Sleep(20);
pFile->Close();
pFile=NULL;
session.Close();
}
::WaitForSingleObject(hEvent1,INFINITE);
nLimit1++;
::SetEvent(hEvent1);
return 0;
}
我这个线程函数里面有没有内存泄漏,指出者给分。