多线程显示图片问题
线程里面主要代码如下:
constructor showpic.create(im_name: timage; beg_sno: integer; end_sno: integer; sleep_time: integer);
begin
inherited Create(false);
begsno := beg_sno;
endsno := end_sno;
sleeptime := sleep_time;
gb_bool := true;
im := im_name;
FreeOnTerminate := true;
gb_bool := true;
end;
procedure showpic.Execute;
begin
xianshipic();
end;
procedure showpic.xianshipic;
var
i: integer;
beg_sno: integer;
end_sno: integer;
i_m: timage;
sleep_time: integer;
begin
{ Place thread code here }
beg_sno := begsno;
end_sno := endsno;
sleep_time := sleeptime;
//gb_bool := true;
while gb_bool do
begin
for i := beg_sno to end_sno do
begin
im.Picture.LoadFromFile( 'f:\test\新建文件夹\bmp\ ' + inttostr(i) + '.bmp ');
sleep(sleep_time);
application.ProcessMessages;
end;
end;
end;
程序调用命令如下:
showpic.create(image1, 8000, 8021, 20);
showpic.create(image2, 8000, 8021, 20);
但不知道为什么,在Windows2003 执行时老是报“ntdll.dll”错误,不知道该如何处理,请各位大侠帮帮忙,谢谢!!!
[解决办法]
type
showpic = class(TThread)
......
private
FIndex : Integer;
......
end;
procedure showpic.Execute;
var
beg_sno: integer;
end_sno: integer;
i_m: timage;
sleep_time: integer;
begin
beg_sno := begsno;
end_sno := endsno;
sleep_time := sleeptime;
//gb_bool := true;
while not Terminated and gb_bool do
begin
for FIndex := beg_sno to end_sno do
begin
Synchronize(xianshipic);
sleep(sleep_time);
end;
end;
end;
procedure showpic.xianshipic;
begin
im.Picture.LoadFromFile( 'f:\test\新建文件夹\bmp\ ' + inttostr(FIndex) + '.bmp ');
end;
[解决办法]
在线程使用使用可视化组件需要使用同步方法。
[解决办法]
线程中操作可视控件,需要同步,synchronize,创建线程单元时有说明
[解决办法]
Visual Graph是一套强大的交互图形开发平台,她能非常方便地建造基于图形的界面、制作各种图形元件、实现图形管理、图形建模、制作监控系统、表单系统、绘图系统、流程设计、CAD软件等。她提供功能非常强大的ActiveX控件,和其他流行的编程语言共同工作,极大地弥补了这些语言在图形处理方面的不足。也可以嵌入IE浏览器中,实现网上图形编辑和控制等。http://www.visual-graph.com
[解决办法]
线程同步