首页
社区
课程
招聘
[求助][求助]2个窗口,在不同线程,父子关系,如果一个线程无限Sleep,另一线程也会死掉?
发表于: 2014-9-4 11:45 6976

[求助][求助]2个窗口,在不同线程,父子关系,如果一个线程无限Sleep,另一线程也会死掉?

2014-9-4 11:45
6976
1.父窗口在主线程
2.子窗口在另一线程

子窗口所在线程接收命令后,如果Sleep无限长(或其它死锁操作)的话,父窗口也跟着死了

如何处理子窗口卡死而不让主窗口也跟着卡死?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 261
活跃值: (51)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
创建非模态窗口
2014-9-4 11:57
0
雪    币: 7048
活跃值: (3527)
能力值: ( LV12,RANK:340 )
在线值:
发帖
回帖
粉丝
3
窗口是线程所有的,父窗口创建的子窗口,那么子窗口理应也是父窗口的线程维护消息。
好像只有一种CreateMDIWindow是其它线程维护子窗口消息的吧。
不知lz的窗口是怎么实现的?
2014-9-4 12:07
0
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
不行的,问题的根源主要在于,父子窗口之前的联系,比如父窗口移动,子窗口也需要跟着移动。
2014-9-4 13:48
0
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
子窗口用另一进程来开。
2014-9-4 13:49
0
雪    币: 496
活跃值: (291)
能力值: ( LV13,RANK:400 )
在线值:
发帖
回帖
粉丝
6
Replace the SendMessage  with PostMessage or PostThreadMessage
2014-9-4 13:58
0
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
这些消息不是由我主动发起的,而是由系统机制来保证,我移动主窗口,总不至于要再写代码去移动子窗口吧。
2014-9-4 14:00
0
雪    币: 496
活跃值: (291)
能力值: ( LV13,RANK:400 )
在线值:
发帖
回帖
粉丝
8
一个窗口联动的消息处理,难道计算移动的offset需要你算一天?

消息处理的写法有问题,重新思考一下

你这是在附加别人的密码窗口么
2014-9-4 16:25
0
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
说到窗口移动只是举例而已,父子窗口之间还是有很多内在联系的,我还没完全弄清楚,但卡死应该不是由于我代码造成的。

不是密码窗口,而是在研究多进程的浏览器,我发现IE也是有这样的问题的:如果网页进程执行的JS死循环了,也会卡死IE的。
2014-9-4 16:28
0
雪    币: 496
活跃值: (291)
能力值: ( LV13,RANK:400 )
在线值:
发帖
回帖
粉丝
10
消息循环都被阻塞了 不卡就奇怪了
2014-9-4 17:22
0
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
请问有解决方案么?
2014-9-5 09:16
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
永远不要在UI线程中使用类似sleep这样的函数。如果有消息传递,使用postmessage。
首先要确认的是,你为什么需要使用sleep
2014-9-7 12:02
0
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
Sleep只是举例,但确实存在着阻塞UI线程的情况,请问这种情况有什么比较好的办法处理么?
2014-9-9 10:38
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
这个就和业务场景有关了~换句话说,你要考虑的是如何去掉需要阻塞UI的场景
举个栗子~假设你要查询一个超长的SQL,那么完全可以在UI中放一个事件循环来保证不阻塞,当worker线程完成查询时传递给UI线程,再根据状态机往下继续走。

尽量把可能阻塞UI线程的地方变成异步执行
2014-9-9 13:15
0
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
这一步阻塞无法避免的了。例如IE:如果网页进程执行的JS死循环了,同样会卡死IE
2014-9-9 13:58
0
游客
登录 | 注册 方可回帖
返回
//