我主线程有一个循环,子线程要是计算主线程循环的时间,子线程的Execute方法中是发送一个消息给主线程,让它显示执行的时间值.
现在是主线程完全占用了CPU时间,已经加入了Sleep了,但接受时间值消息的方法还是无法被执行,请教达人解答下啊,小弟在线等!!!!
现在是主线程完全占用了CPU时间,已经加入了Sleep了,但接受时间值消息的方法还是无法被执行,请教达人解答下啊,小弟在线等!!!!
解决方案 »
- cxgrid 英文显示不出来
- 使用RIchView如何设置行距和字距?
- Delphi7 怎么把Excel中的数据指定导入SQL2000中的一个表里面吗?谢谢各位了!
- 我 VS 联想
- 点击关闭窗体的小叉,程序结束之前的操作
- 用word2000进行报表的输出
- 可以子窗体左右下突破主窗体,但不能向上突破,怎么做到?
- (高分求)如何将Tchart中显示的图形,可放大可缩小,像电子地图一样的?
- 有关一个汉字与其拼音声母?
- 如何隐藏memo的光标?
- 各位大侠,进来看看 Delphi6.0 用Qreport组件打印报表过程中如何设置控件组 便于访问?
- delphi利用数组存取数据库中的字段,怎么写sql语句
主线程里适当的地方加一些Application.ProcessMessage好了
是不是我在释放的时候把"Form"这个也释放掉了呀?
这样定义的:
TProcessThread = class(TThread)
protected
procedure Execute;override;
public
Form:TFrmMain;
constructor Create(F:TFrmMain);
end;constructor TProcessThread.Create(F:TFrmMain);
begin
Form := F;
inherited Create(False);
end;procedure TProcessThread.Execute;
begin
inherited;
with Form do
begin
DoUpload;
end;
end;
一般把VCL操作代码放到一个过程里面,然后在线程里面使用Synchronize同步到主线程。P.S. 一般多线程不直接引用或操作VCL类,可以考虑通过事件的方式委托出去。