调用线程的错误~
CScanThread是个线程函数,里面再多次调用DO线程。
DO里面我就写了最基本的,但是到了第二次调用,才进入了DO。
不知道问题在那里~
typedef struct IPParam
{
int StartPort;
int EndPort;
byte a,b,c,d;
}IPPARAM;
BOOL CScanThread::InitInstance()
{
int Max=11;
int port[11]={0};
port[0]=21;
port[1]=80;
port[2]=110;
port[3]=139;
port[4]=143;
port[5]=3306;
port[6]=35;
port[7]=366;
port[8]=445;
port[9]=1025;
port[10]=3000;
PORTPARAM set;
maxport=0;
set.a=192;
set.b=168;
set.c=170;
set.d=129;
for(int i=0; i<Max; i++)
{
set.Port=port[i];
AfxBeginThread(DoScanPort,&set,THREAD_PRIORITY_NORMAL);
criticalSection.Lock();
maxport++;
criticalSection.Unlock();
while(maxport > 9)
{
Sleep(10);
}
}
while (maxport > 0)
{
Sleep(10);
}
AfxMessageBox("Finish");
ExitInstance();//结束线程
AfxEndThread(0);//关闭线程
return TRUE;
}
UINT CScanThread::Do(LPVOID lpParam)
{
criticalSection.Lock();
maxport--;
criticalSection.Unlock();
return 1;
}