mfc创建线程之后,鼠标点击界面会卡死

qq_33576705 2017-07-25 12:00:15
如下创建线程,

DWORD threadId_encode = 0;
HANDLE hthrd_encode = NULL;

decode_thread_flag = TRUE;

hthrd_encode = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Thread_stream,(LPVOID)this,0,&threadId_encode);
if (hthrd_encode == NULL)
{
printf("create thread failed \n");
}
CloseHandle(hthrd_encode);
//
SetTimer(1,2000,NULL);


然后线程里面执行while(1),循环里面非阻塞的方式接受UDP包。

问题来了,此时点击主界面对话框的任意位置或按钮,界面都会卡死,显示无响应状态,为什么?
...全文
902 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
daydayUp. 2017-12-15
  • 打赏
  • 举报
回复
全部代码+1
qq_36252226 2017-12-13
  • 打赏
  • 举报
回复
你的MFC可能,被这个线程阻塞了
sichuanwww 2017-11-10
  • 打赏
  • 举报
回复
xiaohuh421 2017-11-09
  • 打赏
  • 举报
回复
只有看了你的全部代码, 才能知道错在哪里. 一般界面卡死, 肯定是在UI线程做了耗时操作, 或者有阻塞函数 在UI线程执行了.
weixin_40994171 2017-11-08
  • 打赏
  • 举报
回复
Thread_stream中具体代码,估计是recvfrom失败后没有Sleep
l357630798 2017-08-07
  • 打赏
  • 举报
回复
引用 4 楼 CKRGD 的回复:
单从描述感觉没有问题,线程中有发送消息之类的操作,或者线程有操作界面
+1
Eleven 2017-08-07
  • 打赏
  • 举报
回复
你线程函数中是如何写的?
stone_wang5 2017-07-31
  • 打赏
  • 举报
回复
看看你的线程执行代码,是不是没有Sleep()一直持续占用CPU资源,导致主线程的没有获取到执行,导致主界面卡住
zgl7903 2017-07-26
  • 打赏
  • 举报
回复
贴代码 Thread_stream
chen_JADE 2017-07-26
  • 打赏
  • 举报
回复
线程里面不要While(1)
羽毛乱发 2017-07-25
  • 打赏
  • 举报
回复
UDP的话可以通过多种SOCKET模式来处理,select啊,event啊,基于MFC的csocket啊,你可以读取数据以后抛到线程里面处理,除了select,一般都有通知消息给你去读取数据的。 你可以弄个sleep(100)之类的看下,还会卡么?
女神打Boss 2017-07-25
  • 打赏
  • 举报
回复
单从描述感觉没有问题,线程中有发送消息之类的操作,或者线程有操作界面
赵4老师 2017-07-25
  • 打赏
  • 举报
回复
Multiple Threads in the User Interface http://msdn.microsoft.com/zh-cn/library/ms810439.aspx
qq_33576705 2017-07-25
  • 打赏
  • 举报
回复
引用 1 楼 shengliz 的回复:
UDP的话可以通过多种SOCKET模式来处理,select啊,event啊,基于MFC的csocket啊,你可以读取数据以后抛到线程里面处理,除了select,一般都有通知消息给你去读取数据的。 你可以弄个sleep(100)之类的看下,还会卡么?
暂时来说只测试了sleep,是没有作用的

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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