如题,请问这种问题如何解决?标题描述的只是个例,其实所有的网络组件在ReceiveBuffer时只要是ShowModal显示另一个窗口或者有MessageBox都是会死等了,这个可以用Show显示窗口的办法来解决,可是解决不了MessageBox的问题,本人学艺不精,请高教赐教,非常感谢!

解决方案 »

  1.   

    同步到主线程,譬如PostMessage到主窗口处理自定义消息,收到消息MessageBox即可。
      

  2.   

    楼上所说的是标准做法吗?这样不是太麻烦了吗?所有MessageBox都在主窗口操作,包括OpenDialog等等一堆窗口全要这样做
      

  3.   

    再说了,就算在主窗口的MessageBox同样会阻断ReceiveBuffer,显示MessageBox跟ShowModal是一样的。
      

  4.   

    这个为什么要用showmessage呢。这个是showmodal窗体;
    用消息机制去处理一些告警等等不是更好?
      

  5.   

    你ReceiveBuffer线程和主线程是2个线程,你在ReceiveBuffer里MessageBox或者ShowModal,这俩都是阻塞函数,会阻塞在他们的窗体消息处理函数中,你把消息PostMessage到主线程,你ReceiveBuffer接着运行,要不还有更麻烦的方法,在你的ReceiveBuffer线程里实现窗体消息循环,同时不阻塞ReceiveBuffer也是可以的。
      

  6.   

    请仔细看#1帖子,我说的是PostMessage,不是ShowMessage。