作者:frankwun
所谓假死,就是程序运行多天后,子线程仍在工作,而主界面却卡死了。
可能的原因如下:
1,子线程直接更新界面。
原因:子线程直接操作界面容易出现资源占用问题,因为主线程也在不断的访问界面。 解决方法:子线程要更新的数据设置为全局变量。子线程更新过程要加锁,更新完成后,用PostMessage通知主界面(主线程)要更新界面了。主界面接收到消息后,加锁读取待更新的数据,来更新界面。
2,检查主线程中是否存在耗时的循环或死循环,在循环体中加上
Application.ProcessMessages。
3,检查程序中的WaitFor。
4,子线程的循环体中加Sleep(1)。
5,如果使用Indy控件,加上TIdAntiFreeze。