大家看看这个MFC程序为什么会为什么一运行就死机

wuzhi11love 2011-06-03 11:13:39
大家看看这个MFC程序为什么会为什么一运行就死机:
case IDC_OK://系统开始工作,里面有个死循环不断的开启socket线程处理函数,
while(1)
{
sockReceive = accept(sockServer, (SOCKADDR*)&client, &ClientLen);

// printf("===== start =====\n");
// printf("accept\n");

QueueUserWorkItem(ServerThread, (void

*)sockReceive, WT_EXECUTELONGFUNCTION);//开启ServerThread线程
}
是上面的while死循环造成的,这个程序在dos界面下是可以正常工作的,不过到了MFC就死

机了,大家能不能提供一个解决办法?
...全文
264 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
smwhotjay 2011-06-10
  • 打赏
  • 举报
回复
牛,我现在想写点死机程序都难..r3下当机程序
地下室小红叔 2011-06-10
  • 打赏
  • 举报
回复
MFC程序有界面 最好让UI单独占用一个线程 任务线程单开
feinushen 2011-06-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wuzhi11love 的回复:]
引用 4 楼 luciferisnotsatan 的回复:
处理
case IDC_OK:
这个消息时,进了while就出不去了。
消息循环被阻塞了,界面就没反应了。

我是想实现点击OK的时候开始接受数据,每当客户请求后开一个线程来处理客户请求,然后

从接收到的数据包里找到特定的字段,显示在LIST_BOX里面,可是接受请求就是个阻塞的过

程,那应该怎么办?,在case ……
[/Quote]

搞定了 不结贴?
sharptiger123 2011-06-05
  • 打赏
  • 举报
回复
DOS 界面没有界面 线程 兄弟开个工作线程吧
wuzhi11love 2011-06-04
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zjut018 的回复:]

你不要while(1)好了,当线程为0的时候做这事情好了啊!
[/Quote]
一方面是while(1)的问题,还有就是里面接受的时候会阻塞
wuzhi11love 2011-06-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hustlaofan 的回复:]

为什么要写循环,在onbuttondown()函数里写
sockReceive = accept(sockServer, (SOCKADDR*)&client, &ClientLen);

// printf("===== start =====\n");
// printf("accept\n");

QueueUserWorkItem(ServerThread, ……
[/Quote]
刚才搞定了,我在IDOK里面又开一个线程,将hwnd和socket放到一个数组里面传到线程里面,谢谢各位
zjut018 2011-06-04
  • 打赏
  • 举报
回复
你不要while(1)好了,当线程为0的时候做这事情好了啊!
hustlaofan 2011-06-04
  • 打赏
  • 举报
回复
为什么要写循环,在onbuttondown()函数里写
sockReceive = accept(sockServer, (SOCKADDR*)&client, &ClientLen);

// printf("===== start =====\n");
// printf("accept\n");

QueueUserWorkItem(ServerThread, (void

*)sockReceive, WT_EXECUTELONGFUNCTION);//开启ServerThread线程
不可以吗?
wuzhi11love 2011-06-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 luciferisnotsatan 的回复:]
处理
case IDC_OK:
这个消息时,进了while就出不去了。
消息循环被阻塞了,界面就没反应了。
[/Quote]
我是想实现点击OK的时候开始接受数据,每当客户请求后开一个线程来处理客户请求,然后

从接收到的数据包里找到特定的字段,显示在LIST_BOX里面,可是接受请求就是个阻塞的过

程,那应该怎么办?,在case IDC_OK里面开一个线程?
wuzhi11love 2011-06-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 oyljerry 的回复:]
while循环不停的启动线程,造成系统资源耗尽/..
[/Quote]
可是上面有个sockReceive = accept(sockServer, (SOCKADDR*)&client, &ClientLen);阻塞过程啊,只有接受到客户请求后才开一个线程
oyljerry 2011-06-03
  • 打赏
  • 举报
回复
while循环不停的启动线程,造成系统资源耗尽/..
luciferisnotsatan 2011-06-03
  • 打赏
  • 举报
回复
处理
case IDC_OK:
这个消息时,进了while就出不去了。
消息循环被阻塞了,界面就没反应了。
ouyh12345 2011-06-03
  • 打赏
  • 举报
回复
阻塞了消息循环吧,在线程里这样做

15,471

社区成员

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

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