我使用TIdHTTP组件从一个单独的线程中的银行加载xml数据,但我的表单在此期间被冻结......
可能是什么问题?
我有一个主窗体和线程类,在线程类中我有一个名为loadData的方法,并且在线程上:: Execute i Synchronize(loadData);
当点击按钮时,我创建了类似testThread的线程类实例* t = new testThread(false);
这就是
当我点击按钮时,主窗体会冻结? 甚至单独的线程没有帮助????
请帮助!!!
答案 0 :(得分:0)
Synchronize()
正在主线程的上下文中运行loadData()
方法,而不是在工作线程的上下文中。这就是你的主线程在loadData()
繁忙时阻塞的原因。您滥用Synchronize()
,使您的线程无用。您需要在Synchronize()
之外完成大部分线程工作,然后仅在需要时使用Synchronize()
在主线程中执行小更新,例如显示状态(即使如此,Synchronize()
并不总是最好的选择。)