怎么判断一个线程已经结束??

stm8s103 2010-08-02 11:05:19
p_socket_main_thread=new SOCKET_MAIN_THREAD(1); //新建线程

p_socket_main_thread->ip_str=ip; //传递IP地址
p_socket_main_thread->port=port; //传递PORT
p_socket_main_thread->Priority=tpHigher; //线程优先级高
p_socket_main_thread->Resume(); //线程恢复运行,这一句会出现警告:[BCC32 Warning] GPRS_CTRL.cpp(35): W8111 Accessing deprecated entity '_fastcall TThread::Resume()'
这个警告怎么消除??



线程怎么结束??
if(p_socket_main_thread!=NULL) //
{
//发送消息,SOCKET主线程自动退出
PostThreadMessage(p_socket_main_thread->ThreadID,WM_SERVER_STOP,0,0);

//等待线程退出
p_socket_main_thread->WaitFor(); //???????????????????????????????

//貌似线程并没有退出,就返回了
//关闭句柄
CloseHandle((void *)p_socket_main_thread->Handle);
p_socket_main_thread=NULL;
}


...全文
197 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
周药师 2010-08-02
  • 打赏
  • 举报
回复
首先你用了WaitFor方法就不能用FreeOnTerminate = True了
WaitFor方法和Terminate()方法结合使用
p_socket_main_thread->Terminate();
p_socket_main_thread->WaitFor();
周药师 2010-08-02
  • 打赏
  • 举报
回复
判断线程是否退出
可以在线程的里做个标志变量
来表示当前线程的状态
周药师 2010-08-02
  • 打赏
  • 举报
回复
因为在C++Builder2009/2010以后的版本中,
TThread类的Resume和Suspend函数已不建议使用.
如果要挂起或恢复线程,访问Suspended属性即可:
thread->Resume();
thread->Suspend();
换成
thread->Suspended = false;
thread->Suspended = true;

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧