关于VC延时的有关问题

关于VC延时的问题
        SetDlgItemText(IDC_RICHEDITSENDDATA,_T("DPM\n"));
SetEvent(m_hSendEvent);
//延时 
        这里我用的是Sleep(3000);

SetDlgItemText(IDC_RICHEDITSENDDATA,_T("DGM\n"));
SetEvent(m_hSendEvent);
请问我是用串口来调试一个工控设备,以上两句是用串口给工控设备发命令,然后等待响应,我用的是Sleep,可是发现Sleep用来整个程序就停止。所以没用,不知这里用上什么样的延时会好些?
------解决思路----------------------
要想长时间延时,并且有反应,得创建工作线程,延时等待交由工作线程完成
------解决思路----------------------
Sleep你放在主线程中当然会堵塞主线程,你可以放到工作线程中来完成
------解决思路----------------------
可以使用定时器 加 状态机  操作
------解决思路----------------------
你用Sleep方式接收响应,若响应速度快一点岂不丢失?应该使用事件方式。
------解决思路----------------------
用多线程
打开串口时设置串口的超时参数
在新线程中发送后接收,要么收到,要么收不到超时