如题。谢谢回答。

解决方案 »

  1.   

    说的太不清楚,什么句柄?内核句柄肯定存在竞争。
    你的work线程中出现MsgBox是模态的,在你不关闭对话框之前work线程是被阻塞的。
      

  2.   

    MessageBox是模式对话框,这将阻塞UI线程的消息循环,同时容易造成程序死锁。
      

  3.   

    因为MessageBox弹出事必造成需要UI线程需要重绘主窗口,但Worker线程又将UI线程给阻塞了,所以就挂了,MessageBox不能在Worker中弹出。
      

  4.   

    TO: mythay(小黑) 
    有个朋友说系统对句柄有一定的保护,引起竟争的可能性很小。是这样吗?在资源竟争上他与普通资源一样吗?TO:DentistryDoctor(雅克医生(潜心修内功,向各位大师取经了)) 
    可否详解?WORKER线程见了UI线程就将其阻塞吗?为什么有时用NULL代替HWND,MESSAGEBOX又能正常弹出?有朋友说出现MESSAGEBOX挂的情况,往往是WORKER中还有别的阻塞函数,如SOCK的SEND,RECV等,它们有何关系?谢谢。
      

  5.   

    用了NULL后messagebox调用时的消息处理不属于你当前的UI线程所以可以正常弹出。
      

  6.   

    你应该是在UI线程莉调用了WaitForSingleObject()等阻塞消息循环的函数了。