H
hawkfly
Unregistered / Unconfirmed
GUEST, unregistred user!
这个问题关键在OnTimer事件中,由于系统的问题,实际上的10ms响应时间太小,
你的ontimer事件在响应过程中就可能又发生一次ontimer事件啦,而系统有要保留现场,
结果是资源耗尽。
procedure TForm1.Timer1Timer(Sender: TObject);
var X,Y : Integer;
begin
Timer1.enabled=false;
If (TmpBmp.Width = 0) or (TmpBmp.Height = 0) Then Exit;
For X := 0 To (Width div TmpBmp.Width) Do
For Y:= 0 To (Height div TmpBmp.Height) Do
Canvas.Draw(X*TmpBmp.Width,Y*TmpBmp.Height,TmpBmp);
end;
timer1.enabled=true;
end.
在Ontimer事件中关闭timer直到ontimer完成后再打开。
这个地方是解决的方法,如果有判断是否资源足够,在分配资源后判断是否成功就可以
嘛。
你的ontimer事件在响应过程中就可能又发生一次ontimer事件啦,而系统有要保留现场,
结果是资源耗尽。
procedure TForm1.Timer1Timer(Sender: TObject);
var X,Y : Integer;
begin
Timer1.enabled=false;
If (TmpBmp.Width = 0) or (TmpBmp.Height = 0) Then Exit;
For X := 0 To (Width div TmpBmp.Width) Do
For Y:= 0 To (Height div TmpBmp.Height) Do
Canvas.Draw(X*TmpBmp.Width,Y*TmpBmp.Height,TmpBmp);
end;
timer1.enabled=true;
end.
在Ontimer事件中关闭timer直到ontimer完成后再打开。
这个地方是解决的方法,如果有判断是否资源足够,在分配资源后判断是否成功就可以
嘛。