for (i;iCheckListBoxTrovati->Items->Count && stopmail==false && !Terminated;i+=4) { while (frmMain->CheckListBoxTrovati->Checked[i]==false && iCheckListBoxTrovati->Items->Count-1 ) i++; if (i == frmMain->CheckListBoxTrovati->Items->Count-1 ) break; else { AssegnaUrl(i); ThreadCercaEmail1 *CercaEmail1; ThreadCercaEmail1 *CercaEmail2; ThreadCercaEmail1 *CercaEmail3; ThreadCercaEmail1 *CercaEmail4; if (ListaUrl->Count > 0) { CercaEmail1 = new ThreadCercaEmail1(true,ListaUrl->Strings[0]); if (maxThreads) { criticNumThreadEmail->Acquire(); try { numThreads++; } __finally { criticNumThreadEmail->Release(); } } CercaEmail1->Resume(); } if (ListaUrl->Count > 1) { CercaEmail2 = new ThreadCercaEmail1(true,ListaUrl->Strings[1]); if (maxThreads) { criticNumThreadEmail->Acquire(); try { numThreads++; } __finally { criticNumThreadEmail->Release(); } } CercaEmail2->Resume(); } if (ListaUrl->Count > 2) { CercaEmail3 = new ThreadCercaEmail1(true,ListaUrl->Strings[2]); if (maxThreads) { criticNumThreadEmail->Acquire(); try { numThreads++; } __finally { criticNumThreadEmail->Release(); } } CercaEmail3->Resume(); } if (ListaUrl->Count > 3) { CercaEmail4 = new ThreadCercaEmail1(true,ListaUrl->Strings[3]); if (maxThreads) { criticNumThreadEmail->Acquire(); try { numThreads++; } __finally { criticNumThreadEmail->Release(); } } CercaEmail4->Resume(); } //CercaEmail1->WaitFor(); Application->ProcessMessages(); if (maxThreads && numThreads > maxThreads) { if (ListaUrl->Count > 0) CercaEmail1->WaitFor(); if (ListaUrl->Count > 1) CercaEmail2->WaitFor(); if (ListaUrl->Count > 2) CercaEmail3->WaitFor(); if (ListaUrl->Count > 3) CercaEmail4->WaitFor(); } } } if (stopmail) restartEmail=i; while (!Terminated && stopmail==false && numSitiProcessMessages(); ::Sleep(2000); }