VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 871|回复: 8

关于线程中使用::PostMessage!

[复制链接]

1

主题

5

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-3-4 11:00:01 | 显示全部楼层 |阅读模式
我在线程中使用
::PostMessage(g_HwndMain,WM_THREAD_END,0,0);
是向主线程(主界面)发送消息;
按照如下顺序:
1)开线程,结束线程
2)开线程,结束线程
第三次开线程,程序就错误了,
如果没有上面这个语句的话,可以随便开线程,结束线程
请大家指教!
回复

使用道具 举报

0

主题

22

帖子

18.00

积分

新手上路

Rank: 1

积分
18.00
发表于 2020-5-17 10:15:01 | 显示全部楼层
贴出开线程和结束线程的关键代码,出错现象和信息
回复

使用道具 举报

0

主题

57

帖子

27.00

积分

新手上路

Rank: 1

积分
27.00
发表于 2020-5-23 00:30:01 | 显示全部楼层
WaitForSingleObject 了没?
回复

使用道具 举报

0

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-5-25 20:00:01 | 显示全部楼层
在线程中使用PosThreadtMessage
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-5-26 08:45:01 | 显示全部楼层
应该不是PostMessage的问题,我的程序每隔200ms就自动向主线程PostMessage也没有错误。
回复

使用道具 举报

1

主题

5

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-5-27 09:00:01 | 显示全部楼层
这是调试时的消息,不好意思,没立刻回复!
The thread 0x6AC has exited with code 0 (0x0).
The thread 0x550 has exited with code 0 (0x0).
First-chance exception in SelfThread.exe (MFC42.DLL): 0xC0000005: Access Violation.
回复

使用道具 举报

1

主题

5

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-5-28 06:30:01 | 显示全部楼层
我不知道WaitForSingleObject 怎么用,我就在
::PostMessage(g_HwndMain,WM_THREAD_END,0,0);后面加上
WaitForSingleObject(g_HwndMain,1000);
调试时还是不对
回复

使用道具 举报

1

主题

5

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-5-28 20:15:02 | 显示全部楼层
开线程是
AfxBeginThread(ThreadCalTem,GetSafeHwnd());
关线程是一个全局BOOL型变量,令
bThreadStop=true;
在线程的循环计算中,
if(bThreadStop)
  break;

UINT ThreadCalTem(LPVOID pParam)
{
  do
  {
   if(bThreadStop)
    break;
   .....
  }while(.....)
  ::PostMessage(g_HwndMain,WM_THREAD_END,0,0);
  return 0;
}
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-5-31 19:45:01 | 显示全部楼层
线程关闭时有时候不需要用这个。特别情况才可以用这个。
m_bAuto...具体全名忘了。默认是真,就是线程结束后自动删除对象,如果是假的话就手对。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表