我在一个子窗口弹出出就启动一个线程去执行,里面有用到子窗口的指针,如果线程执行到窗口还关闭时是正常的,如果线程还没执行完子窗口就关闭了那么程序就会出错说内存不能为read有什么好办法可以判断线程里指向窗口的指针是否可以为read我用IsBadWritePtr 和IsBadReadPtr还是没作用

解决方案 »

  1.   

    可以用结构化异常处理__try,__except来捕获这种错误,这样在有异常发生的时候你的线程就自己退出吧
      

  2.   

    应该在窗口退出前检测线程是否结束。既然是窗口创建的线程,就应该有线程的句柄。这样的话,在窗口退出前调用WaitForSingleObject(hThread, -1)等待线程结束就好了。
      

  3.   

    在窗口关闭时,等待线程结束才最后关闭,waitforsingleobject
    线程结束时发出个事件,通知窗口可以关闭了.gl
      

  4.   

    在线程中最好是用SendMessage,PostMessage方式去通知窗口,
    而不是直接去操作窗口指针判断窗口有效性可用 IsWindow()还有在窗口关闭时可WaitForSingleObject一下线程