调用UpdateData()就崩溃

Longerandlonger 2010-09-20 09:44:42
用AfxBeginThread()创建线程,线程调用下面这个函数,一运行,崩溃。注释UpdateData()后就不崩溃了。


void CMyDlg::Clock()
{
clock_t beginTime = clock();
while (1)
{
float second = (clock() - beginTime) / (float)CLOCKS_PER_SEC;
m_clock = second;
// UpdateData(FALSE);
Sleep(25);
}
}
...全文
601 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Longerandlonger 2010-09-23
  • 打赏
  • 举报
回复
呃,这个问题该结贴了。我是根据2楼、4楼的提示解决的。
我是初学者,很多东西不懂,还得慢慢来。
「已注销」 2010-09-22
  • 打赏
  • 举报
回复
多线程干事情的时候,你里面有没有用临界来保证原子操作?
victor505 2010-09-22
  • 打赏
  • 举报
回复
恩 接分 祝福
lover4ever 2010-09-22
  • 打赏
  • 举报
回复
你还是发个消息给窗口可靠点
greex 2010-09-22
  • 打赏
  • 举报
回复
AfxBeginThread产生的县城中不能调用这个东西的,需要在外面调用或者把父对像传进来再调用,直接调用默认参数不对的,必须出错。
arong1234 2010-09-22
  • 打赏
  • 举报
回复
即使原子也不行,就是禁止这么用[Quote=引用 5 楼 ggglivw 的回复:]
多线程干事情的时候,你里面有没有用临界来保证原子操作?
[/Quote]
zyrr159487 2010-09-20
  • 打赏
  • 举报
回复
发个消息sendmessage来updatedata
arong1234 2010-09-20
  • 打赏
  • 举报
回复
从CWnd派生的类是不允许跨线程使用的,一旦使用必然崩溃,因为MFC在TLS里保存了重要信息
dengsf 2010-09-20
  • 打赏
  • 举报
回复
MFC用 线程局部存储机制 保存了很多框架相关的信息,特别是UI相关的,
不然用起来还要繁琐得多,
不了解其实现时,别轻易在其它线程使用MFC的UI功能。

可以在其它线程post个自定义的message回对话框,
处理该消息时再updatedata,
windows机制保证该消息是在创建对话框的线程处理的。
lly212 2010-09-20
  • 打赏
  • 举报
回复
m_clock看看你关联的控件是float不

65,212

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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