Здравствуйте, Я писали:
iix>И как на твой взгляд какая функция красивей?
Как вам эти многократные CloseHandle их бы как нить зделать по другому например так:
bool CIMProto::Login2(char *login,char *pass,u_long status)
{
unsigned int thrdaddr;
if(connected && !logining)
{
recvthrd=0;
__try
{
if(sendmtx=CreateMutex(NULL,false,NULL))
{
DbgPrint("Login2: send CreateMutex error...");
return false;
}
if(recvmtx=CreateMutex(NULL,false,NULL))
{
DbgPrint("Login2: recv CreateMutex error...");
return false;
}
if(pingthrd=(HANDLE)_beginthreadex(NULL,0,(PTHREAD)PingThread,this,0,&thrdaddr))
{
DbgPrint("Login2: ping _beginthreadex error...");
return false;
}
if(recvthrd=(HANDLE)_beginthreadex(NULL,0,(PTHREAD)RecvThread,this,0,&thrdaddr))
{
DbgPrint("Login2: recv _beginthreadex error...");
return false;
}
}
__finally
{
if(!recvthrd)
{
CloseHandle(sendmtx);
CloseHandle(recvmtx);
TerminateThread(pingthrd,0);
WaitForSingleObject(pingthrd,INFINITE);
CloseHandle(pingthrd);
}
}
DbgPrint("Login2: successfull...");
return true;
}
DbgPrint("Login2: not connected or loginning error...");
return false;
}