线程里边有两个堵塞函数:CInternetSession的OpenURL()和CHttpFile的ReadString()。现想在OpenURL()和ReadString()发生堵塞时,终止线程。TerminateThread()是可以终止的,但它不能释放线程资源,存在后患。
请问各位高手有没有其它好的办法,请赐教。

解决方案 »

  1.   

    强行中止永远不可能是正确的方式,应该你自己判断,然后让线程自然结束。我觉得你应该给CInternetSession设置timeout时间。
      

  2.   

    while循环条件增加一个标记,当超时时更新标记退出线程
      

  3.   

    我觉得没有什么好办法,但你可以尽量多的记录申请的空间的地址,这样在调用TerminateThread()前就可以有效的尽可能多的释放空间
      

  4.   

    线程最好的结束方法:自然销毁...其次试试GetExitCodeThreadExitThread
      

  5.   

    To:kakashi0309(夜神月)
    我试了一下
    DWORD dExitCode;
    GetExitCodeThread(hThread,&dExitCode);//hThread为要关闭的线程句柄
    ExitThread(dExitCode);
    怎么会连主进程也给关闭了
      

  6.   

    ExitThread是关闭调用该函数的线程.你是不是写的位置不对.
      

  7.   

    ExitThread(dExitCode)只能在当前线程中用啊,在相应的父线程中返回该线程退出值啊,
    不过这又有什么用,还不是强制关闭,跟TerminateThread()一个样