SOCKET RECV等待TIMER信号返回

我在程序中设置了一个TIMER
int loop = 0;
char bufRecv[MAX_PACKET];
char tempBuf[4096];
//int flag=recv(socketTCP[key], bufRecv, strlen(bufRecv), 0);
int flag = recv(socketTCP, bufRecv, strlen(bufRecv)+1, 0);
//MessageBox(NULL, (LPCWSTR)bufRecv, (LPCWSTR)"back", 0);
int temp12 = strlen(bufRecv);
for (int i = 0; i tempBuf[i] = bufRecv[i];
}
while (temp12>MAX_PACKET){
loop++;
flag = recv(socketTCP, bufRecv, MAX_PACKET, 0);
//temp12 = strlen(bufRecv) - MAX_PACKET*loop;
temp12 = strlen(bufRecv);
for (int i = 0; i < flag; i++){
tempBuf[i + MAX_PACKET*loop] = bufRecv[i];
}
}

if (flag <= 0){
    int temp1 = WSAGetLastError();
    printf("receive data error");
    return -1;
}
//backData = (unsigned char*)tempBuf;
string backStr = "recv data from server ";
backStr += tempBuf;
//backData = new unsigned char[3036];
int i = 0;
for (i = 0; i < backStr.length(); i++){
    backData[i] = backStr[i];
}
backData[i] = '\0';
index = findIndexNum(backData);
//backData = (unsigned char*)backStr.c_str();
//printf("recv data from server:%s", bufRecv);
printf("recv data from server:%s", backData);
ResumeThread(recvThread);
正常收发数据时线程总是在等这个TIMER时间中的SEND,导致由于回应报文被阻塞而程序卡死

自己顶,补充
static void Timer2Proc(HWND hWnd, UINT nMsg, UINT nTimerid, DWORD dwTime, NetSocket *pThis)
{
int err;
byte buf[3036] = "";
char recvbuf[32] = "connect!!";
byte back[3036] = {};
memset(buf, 0, sizeof(buf));
if (pThis == NULL) return;
//SetTimer(NULL, 1, 10000, (TIMERPROC)SocketTimeOut);

err = pThis->pThis->Send(buf, back, 0, sizeof(buf));
if (back[0] != '\0'){
//KillTimer(NULL, 1);
}else{
pThis->pThis->Connect2(pThis->pThis->sIP, pThis->pThis->port);
}
}这是TIMER事件