多线程下的异步操作,该如何解决

多线程下的异步操作
 我的主窗口是个对话框程序,我开了个计算线程处理计算,在计算线程中有个异步操作,我在子线程下创建一个event内核对象,再调用WaitForSingleObject(event, INFINITE)等待异步操作的完成,在异步操作结束的时候我调用了SetEvent使event重置有信号,这个计算过程在dos单线程下可以正常执行,但是在这个多线程下就无法进行,异步操作不执行。请问大家这是什么原因呢?异步操作会自己新开辟一个线程么?
------解决方案--------------------
你的主线程和工作者线程是否会出现死锁呐 
要不你试试这个
msgwaitformultipleobjects
------解决方案--------------------
http://blog.csdn.net/silvervi/article/details/5874212
------解决方案--------------------
引用:
Quote: 引用:

你的主线程和工作者线程是否会出现死锁呐 
要不你试试这个
msgwaitformultipleobjects


我是在子线程中wait,应该不会造成这问题

子线程和异步操作死锁
慎用
WaitForSingleObject(event, INFINITE)

改为
DWORD dwRet = 0;  
MSG msg;  
while (TRUE)  
{  
  dwRet = WaitForSingleObject(m_hThread, 50);  
  switch(dwRet)  
  {  
  case WAIT_OBJECT_0:   
    break; //break the loop  
  case WAIT_TIMEOUT :  
    PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE);  
    continue;  
  default:  
    break; // unexpected failure  
  }  
  break;  
}  

看下