有2个线程:
一个线程播放音乐;
一个线程在not terminated条件下不断循环查找list上是否有数据,如果有,读取数据,停止播放音乐,结束整个线程.
问题:如何在子线程里结束整个主线程
第一次接触多线程问题,还有点糊涂,请大家帮帮我!!!!

解决方案 »

  1.   

    你在子线程里面做个标记,在主线程用计数器去读它,如果发现标记,就close。
      

  2.   

    echome(回音壁):
    你应该没有做过多线程吧,如果你用消息来结束程序,那么子线程就会有挂在内存里面的危险。可以肯定,每次不正常结束子线程而关闭主线程的结果是你的内存可用空间越来越少。你如果正想那样,你可以用sendmessage。
      

  3.   

    楼上所说的情况并不存在。
    当一个进程终止时,系统为它分配的所有资源(包括线程、互斥元、文件句柄等所有内核对象)都会被系统自己回收。在子线程里结束主线程的方法很多,比方说直接向主线程发消息,比较好的是在子线程退出时返回一个退出码(无论是DELPHI的TThead封装还是WindowsAPI都有线程退出码),如果是某个特定值,主线程就结束。
    在DELPHI的TThread线程封装里,有一个OnTerminated事件,也就是说线程结束掉时,会自动激发这个事件,在这个事件里可以检测线程的退出码,来决定相应的操作。