RT,谢谢

解决方案 »

  1.   

    比如:线程2中写成:
    while(IsExit)
    {....
    }
    其中IsExit是一个全局变量,在线程1中让IsExit=FALSE;线程2就会退出
    在线程2退出时用PostThreadMessage发送线程消息给线程1
      

  2.   

    补充楼上,在线程1中,用GetMessage,等待线程2发送的消息到来
      

  3.   

    通过布尔变量让线程2退出,线程1中使用WaitForSingleObject可以接收到线程2退出的消息么?
      

  4.   

    WaitForSingleObject可以用程序句柄获知线程是否退出。
      

  5.   

    GetExitCodeThread  检查线程是否退出
      

  6.   

    thrdControl.cpp文件中定义全局的static结构体,
    主线程中启动线程1,
    struct thrdInfo
    {
    HANDLE hThrd;
    int thrdState; //1继续运行 0停止运行
    }线程1收到信令111,启动线程2,并把线程句柄保存到结构体中,
    同时修改结构体中跟该线程对应的状态标记为1;线程2收到信令222,修改结构体中线程1的状态标记为0,
    并使用WaitForSigleObject等待线程2退出,
    然后释放句柄信息和SOCKET信息.线程2中主要循环:
    while(结果体状态标记为1) //无法检测到状态为0的标记
    {
      继续进行任务的处理...
    }
      

  7.   

    thrdControl.cpp文件中定义全局的static结构体,
    主线程中启动线程1,线程1负责管理线程2的启动和停止.保存线程序句柄和状态信息的结构体:
    struct thrdInfo
    {
    HANDLE hThrd;  //线程句柄
    int thrdState; //1继续运行;0停止运行
    }线程1收到信令111,启动线程2,并把线程句柄保存到结构体中,
    同时修改结构体中跟该线程对应的状态标记为1;线程1收到信令222,修改结构体中线程1的状态标记为0,
    并使用WaitForSigleObject等待线程2退出,
    然后释放句柄和SOCKET.线程2中的循环://线程状态为0时退出线程
    while(结果体状态标记为1) //无法检测到状态为0的标记
    {
      继续进行任务的处理...
    }
      

  8.   


    还需要执行ExitThread和WaitForSingleObject函数么?
      

  9.   

    线程222中有一段代码
    while(TRUE)
    {
      线程222的状态标记在线程111中修改 
      if(线程222的状态标记为1)
       {  继续干活
          并且修改同一结构体中别的参数
       }
       else 状态标记为0
       {  return;工资为0,拒绝干活
       }
    }碰到一个奇怪问题,if(线程状态标记为1){ }里面只执行一个弹出对话框时候,
    线程222能检测到状态为0,并且可以返回。但是让在if(){...}里面多干点活,接收数据包转发,并修改结构体中内容,就不知道返回了,
    也就是说,线程111把线程222的状态修改成0,它还在继续干活