CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  进程/线程/DLL

此种情况下应该如何与主线程同步?

楼主be800(be800)2006-03-13 23:59:53 在 VC/MFC / 进程/线程/DLL 提问

我在   UI   里有一个   button,按下时开始一个线程,再按时会退出此线程。  
   
  子线程会每隔   200ms   发一个消息并传一个   CString   对象指针给主线程处理。但有时我按   button  
  按快了,当主线程还未处理完时,子线程已经退出,相应的临时   CString   对象被销毁掉,主线程这时正在处理的指针是无效的,造成程序异常退出。  
   
  此和情况下应该如何与主线程作同步处理?难道要把用全局   CString   对象以避免被销毁掉吗?  
   
  /*   消息处理函数   */  
  void   CGetItDlg::OnUpdateLog(WPARAM   wParam,   LPARAM   lParam)  
  {  
  CString   str;  
  str   =   *(CString   *)lParam;  
  m_strLog   +=   str;  
   
  m_LogEdit.SetWindowText(m_strLog);  
  m_LogEdit.SetScrollPos(SB_VERT,m_LogEdit.GetLineCount(),TRUE);  
  m_LogEdit.LineScroll(m_LogEdit.GetLineCount(),0);  
  }  
  /*   线程处理函数   */  
  UINT   CGetItDlg::Thread1(LPVOID   lpParam)  
  {  
  static   UINT   i   =   0;  
  while(1)  
  {  
  //HWND   hwnd=((RECVPARA   *)lpParameter)->hwnd;  
  HWND   *   hwnd=(HWND   *)lpParam;  
   
  CString   str;  
  str.Format("test   %d",i++);  
  str   +=   "\r\n";  
  ::PostMessage((*hwnd),WM_UPDATE_LOG,0,(LPARAM)(&str));  
  if(!m_Valid)   /*   m_valid   与   button   相关联,为   Pin-pang   状态变量*/  
  break;  
  Sleep(200);  
  }  
   
  return   0;  
  } 问题点数:20、回复次数:2Top

1 楼flyelf(空谷清音)回复于 2006-03-14 09:00:19 得分 20

use   SendMessageTop

2 楼mythay(小黑)回复于 2006-03-14 10:41:08 得分 0

你可以用一个炼表将CString链起来,每有一个就放到连标中。  
  当然对链表访问的时候要用到互斥两。Top

相关问题

  • 在线程中ADO控件需不需要用Synchronize保持与主线程同步
  • 多线程同步问题:使用了临界区实现同步,主线程为什么一要进入临界区就挂起
  • 多线程的同步问题: lock(??) ??到底应该写什么?
  • 那位知道“门控系统”和“线程同步”应该怎么翻译?
  • 100分求:同步更新的存储过程应该怎么写?
  • 关于线程同步
  • 关于线程同步。
  • 多线程同步问题...
  • 关于线程同步
  • 多线程同步问题

关键词

  • 线程
  • logedit
  • 主线程
  • cstring
  • hwnd
  • 处理
  • 退出
  • lparam
  • 对象
  • str

得分解答快速导航

  • 帖主:be800
  • flyelf

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo