线程创建:
ReadThread=AfxBeginThread(my_Thread,0,THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED,NULL); 函数:
my_Thread(LPVOID param)
{
   while(1)
   {
     .....
   }
}俺在线程中使用while(1)不断循环,当启动这个线程后.通过任务管理器观察线程情况.每隔0.5s就自动产生2个线程.当整个程序执行完后这个屏幕就黑屏.这是怎么回事啊?俺是菜鸟。谢谢解答!

解决方案 »

  1.   

    线程创建:
    ReadThread=AfxBeginThread(my_Thread,0,THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED,NULL);  ReadThread.ResumeThread();
    不好意思,创建之后就直接启动了。
      

  2.   

    用这个函数AfxBeginThread()就是创建完了就启动线程呀,没错,要防止线程重复创建应该再加个标志,创建了就不要再创建了,另外看你的创建线程函数放在什么地方了,是定时器相应里面吗?
      

  3.   

    各位大哥,我的循环里没有启动线程的语句.就算while里面放有一个变量.当启动这个线程的时候,使用任务管理器查看时还是不断创建线程.创建线程时很有规律的,1s创建2个.
      

  4.   

    你的线程里边有没有调用系统 接口或者 其他...的语句 把 while 循环里的代码 show 一下啊
      

  5.   

    那你看年程序在哪用过 Sleep函数,或者OnTime函数,看看有没有创建线程的代码在里面,或者其它调用。
      

  6.   

    如果你觉得是在while循环里创建的线程,那就在while里Sleep(10*1000),这样的话应该每10秒创建一个线程,如果还是0.5s就自动产生2个线程,那说明不是这里.
      

  7.   

    谢谢各位大哥了,更要谢谢dclchj
    和eyey1,小弟按照你们的方法定位是否在while中有线程创建,果然,
    添加Sleep(10*1000)的时候,是10s创建一个线程.然后一步步调试,找到while中某个不断调用的方法里有创建线程语句.再次谢过各位.分不多,散分了!