VC++关闭线程的有关问题

VC++关闭线程的问题?
请问:
  问题1:我创建了一个线程(立即启动),线程函数里的代码是通过串口读数据。所有的代码在一个对话框窗体类中。
第一次打开该窗体时,线程启动,可以通过串口读到数据。但是当我关闭该窗体时(线程也关闭),第二次打开该窗体时,线程启动了,但是读不到数据,串口代码A处检测不到端口缓冲区有数据。

问题2:上述情况中,如果我关闭窗体时,不关闭线程的话,第二次打开窗体,就可以接收到数据。

代码A处:
  if(WAIT_OBJECT_0==dwResult)
{
if(EV_RXCHAR==dwEvtMask)
{

  }
  }

为什么?请指点。谢谢!

------解决方案--------------------
问题1: 窗口在关闭时是不是没有关闭串口,导致第二次打开窗口导致打开串口失败。

问题2:第一次打开的串口句柄是有效的,线程如果用原串口打开句柄读数据是可以的。
------解决方案--------------------
可以打些调试信息出来,看看再次打开程序时,Open串口的时候是不是失败了。

可以在程序的WM_DESTROY消息处理函数中,先关闭线程,然后关闭串口句柄,保证程序退出后,释放了串口资源。