笔记:线程与GDI的冲突:死机的真正原因
来源:互联网 发布:简述大数据思维 编辑:程序博客网 时间:2024/04/27 22:57
很多人使用线程的时候,都喜欢在线程内画图。如果在线程内画图,程序就很容易出错,而
且还是那种没有任何响应和提示的错误问题.
例如,一个复制文件的程序,这个程序由两个线程组成,一个是复制文件的线程,一个
是显示文件复制进度的线程。理论上这个程序没有什么问题。但是,这个程序有一个很大的
隐患,就是主程序也可能某一时刻要更新这个进度条,例如,进度窗口被其他窗口挡住后或
窗体,这个窗体就要刷新,这时,如果线程的那个部分也要刷新,操作系统也要刷新。这样,
三个部分都要刷新他,程序就很容易死锁(《操作系统》对死锁有明确定义)。。。。。。
有一条原则,即程序中的线程一概不直接操作现成部分中的GDI。他只要发个消息给主程序
,让主程序来绘制图形,就不会出现任何的问题。。。。。
发消息的方法就是用PostMessage的函数,但一定不能用SendMessage,因为用PostMessage
可以让主程序调度去绘图,而SendMessage会立即去绘图。。。。。
且还是那种没有任何响应和提示的错误问题.
例如,一个复制文件的程序,这个程序由两个线程组成,一个是复制文件的线程,一个
是显示文件复制进度的线程。理论上这个程序没有什么问题。但是,这个程序有一个很大的
隐患,就是主程序也可能某一时刻要更新这个进度条,例如,进度窗口被其他窗口挡住后或
窗体,这个窗体就要刷新,这时,如果线程的那个部分也要刷新,操作系统也要刷新。这样,
三个部分都要刷新他,程序就很容易死锁(《操作系统》对死锁有明确定义)。。。。。。
有一条原则,即程序中的线程一概不直接操作现成部分中的GDI。他只要发个消息给主程序
,让主程序来绘制图形,就不会出现任何的问题。。。。。
发消息的方法就是用PostMessage的函数,但一定不能用SendMessage,因为用PostMessage
可以让主程序调度去绘图,而SendMessage会立即去绘图。。。。。
- 笔记:线程与GDI的冲突:死机的真正原因
- 电脑死机的原因
- 计算机系统“死机”的原因
- 电脑死机的原因
- 电脑死机的原因
- 路由器死机的原因
- 引起电脑死机的原因
- TOMCAT频繁死机的原因
- 死机的原因及解决方法
- 电脑频繁死机的原因
- 电脑经常死机的原因
- 手机死机的一些原因
- 电脑经常死机的原因与故障处理分析
- 电脑经常死机的原因与故障处理分析
- 2012的真正原因!
- MFC的DEBUG_NEW与GDI+的冲突问题
- MFC的DEBUG_NEW与GDI+的冲突问题
- 真正解决ScrollLayout与Gallery等组件的滑动冲突
- 结束S1
- LDAP详细介绍
- 老公吃醋~
- irrlicht--这个引擎很强大。。。
- Java 内存分配及String类型详解
- 笔记:线程与GDI的冲突:死机的真正原因
- LDAP中的属性
- 对于DWR的简单总结
- Ext结合DWR的关键代码(运行成功的DWRProxy)
- 国际惯例与中国国情对比表
- LDAP实例设计
- java内存管理机制
- CTO成长史
- Nike Human Race