VC编程在线程里重复SLEEP为什么会让整个程序卡死
VC编程在线程里反复SLEEP为什么会让整个程序卡死?
在一个非主线程里,我while循环里反复执行某段含有sleep的代码会逐渐让主程序卡死,为什么会这样呢? 既然是线程为什么sleep会影响到整个程序呢? 解决办法是不是只有settimer()在TIMER消息中处理?
------解决方案--------------------
不是sleep()让主程序卡死。
应该是你的线程,有操作主程序界面的行为。这样线程和主程序在抢资源,都不放手就卡死了。
这个问题我曾经也遇到过。
找了很久才找到原因。
当线程想要操作界面相关的时候,建议发消息给主程序,让主程序去做。
Timer是主程序执行的,所以不会有这样的情况。
C#有委托,delegate也可以解决这个问题。
在一个非主线程里,我while循环里反复执行某段含有sleep的代码会逐渐让主程序卡死,为什么会这样呢? 既然是线程为什么sleep会影响到整个程序呢? 解决办法是不是只有settimer()在TIMER消息中处理?
------解决方案--------------------
不是sleep()让主程序卡死。
应该是你的线程,有操作主程序界面的行为。这样线程和主程序在抢资源,都不放手就卡死了。
这个问题我曾经也遇到过。
找了很久才找到原因。
当线程想要操作界面相关的时候,建议发消息给主程序,让主程序去做。
Timer是主程序执行的,所以不会有这样的情况。
C#有委托,delegate也可以解决这个问题。