重金求解决在界面中放多个gif动画图片时,运行后cpu占有为100%,有什么办法解决 ( 积分: 200 )

  • 主题发起人 主题发起人 zxmwhg
  • 开始时间 开始时间
Z

zxmwhg

Unregistered / Unconfirmed
GUEST, unregistred user!
重金求解决在界面中放多个gif动画图片时,运行后cpu占有为100%,有什么办法解决
 
重金求解决在界面中放多个gif动画图片时,运行后cpu占有为100%,有什么办法解决
 
{
**********
* Clear Memory
* From Muse2008
**********
}
procedure ClearMemory;
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF);
Application.ProcessMessages;
end;
end;

试试这段代码;
 
用GIF可能太大或处理机制不完善造成的。
 
不好意思昨天匆忙忘了点东西
//降低程序内存占用
procedure TForm1.ClearMemory;
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF);
application.ProcessMessages;
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject); //Timer1的Interval设置为5000;
begin
ClearMemory;
end;
 
terryapp同志,我用了你的方法,CUP占有还是100%
 
同意BBSCOM的看法!这与内存占用关系应该不是太大。
 
那我该怎么解决,同志们救救急啊
 
是用gifimage吗?
 
对是用GifImage,j就是用上百个GifImage时
 
每个动画都用了一个线程,你试试把线程优先级降低?

Applies to
TGIFImage
Declaration
Property ThreadPriority : TThreadPriority;
Description
Specifies the priority of the GIF's paint threads.
Use ThreadPriority to specify which priority the GIF paint threads should execute with. Modifying ThreadPriority does not alter the priority of already executing threads.
The default value of ThreadPriority is specified by the GIFImageDefaultThreadPriority global variable
 
是 TGifImage 吗?它的 paint 是用线程进行的,而且还要与主线程同步,CPU 占用率肯定高,
具体情况具体解决,在这种情况下,你不能用 TImage 包装Gif, 你可以自己用一个线程同时播放多个Gif ,还有,可以用消息驱动同时播放多个Gif。

帮我看看我这个贴子,里面也有Gif 的内容。
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3297371
 
谢谢xusong168,xuxiaohanl两位,我知道你们说的意思了,怎么改变GifImAGE的线程控制,给点具体的例子,再次谢谢二位
 
动画就是占 CPU 啊
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部