求一段多线程例子 我想在一个程序中使用timer控件控制到一个时间播放一段声音现在程序已经可经完成这个功能。但是如果这个声音文件比较大,在到时播放时会有一段时间的延迟。我想最好在到时播放声音文件时,能够启动另外一个线程进行播放,但是不会多线程,请高手们指教,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CreateThread或TThread类代码到处有 ..\Borland\Delphi7\Demos\Threads 有线程演示 \Borland\Delphi7\Demos\Threads现成的例子!不过要细看一下,要不很难理解,我个人觉的这个例子不太好,你可以上网查找一下其他的例子! unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Buttons, ImgList, ComCtrls, ToolWin, Grids, DBGrids, DB, ADODB,ActiveX;type TForm1 = class(TForm) Image1: TImage; Memo1: TMemo; ImageList1: TImageList; BitBtn1: TBitBtn; DataSource1: TDataSource; ADOQuery1: TADOQuery; DBGrid1: TDBGrid; GroupBox1: TGroupBox; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure BitBtn1Click(Sender: TObject); private { Private declarations } Procedure TTobyAdoOver(Sender:Tobject); public { Public declarations } end;//**-----------更新图片线程----------------**//type TTobyIMG = class(TThread) TmpImg: TImage; TmpBool:Boolean; protected { Private declarations } procedure Execute;OverRide; private { Private declarations } procedure TmpChange; public { Public declarations } Constructor Create (TmpImage:TImage); end;//**-----------更新ADO线程----------------**//type TTobyAdo = class(TThread) TmpAdo: TAdoQuery; TmpBool:Boolean; protected { Private declarations } procedure Execute;OverRide; private { Private declarations } procedure TmpLoad; public { Public declarations } Constructor Create (TpAdo:TAdoquery); end;var Form1: TForm1; TobyIMG:TTobyIMG; TobyAdo:TTobyAdo;implementation{$R *.dfm}//**-----------------更新图片线程-----------**//Constructor TTobyIMG.Create(TmpImage:TImage);Begin FreeOnTerminate:=True; TmpImg:=TmpImage; TmpBool:=True; Inherited Create(False);end;Procedure TTobyIMG.Execute;Begin repeat sleep(500); Synchronize(TmpChange); until Terminated;end;Procedure TTobyIMG.TmpChange;begin if TmpBool then TmpImg.Picture.LoadFromFile('2.bmp') else TmpImg.Picture.LoadFromFile('1.bmp'); TmpBool:=Not TmpBool;end;//**--------------更新ADO线程---------------**//Constructor TTobyAdo.Create(TpAdo:TAdoQuery);begin FreeOnTerminate:=True; TmpAdo:=TpAdo; inherited Create(False);end;Procedure TTobyAdo.Execute;begin TmpLoad;end;Procedure TTobyAdo.TmpLoad;begin CoInitialize(nil);//必须装载该函数在ActiveX类里 sleep(3000); TmpAdo.Open; CoUninitialize; //释放com装载end;Procedure TForm1.TTobyAdoOver(Sender:Tobject);begin TobyIMG.Terminate;end;procedure TForm1.BitBtn1Click(Sender: TObject);begin Adoquery1.Close; TobyAdo:=TTobyAdo.Create(Adoquery1); TobyIMG:=TTobyIMG.Create(image1); TobyAdo.OnTerminate:=TTobyAdoOver;end;procedure TForm1.Button1Click(Sender: TObject);begin TobyIMG:=TTobyIMG.Create(image1);end;procedure TForm1.Button2Click(Sender: TObject);begin TobyIMG.Suspend;end;procedure TForm1.Button3Click(Sender: TObject);begin tobyIMG.Resume;end;procedure TForm1.Button4Click(Sender: TObject);begin TobyIMG.Terminate;end;end. 热烈庆祝第一个DELPHI节!(散分) 请问那位朋友知道何处有免费的计算机论文下载? delphi有没有类似于C的memset函数的东东,期待 200分求教高手:OLE自动化对象调用的问题 delphi如何连access 请教ListView的用法 怎么得到ie收藏夹的路径 那位大哥能不能告诉我这么个问题,关于帮助的问题? 高分等你拿!!11delphi中怎样做位移操作!? 有否函数得到系统资源的使用情况,如需要得到当前系统资源的占用率? 如何控制鼠标在屏幕中的一点,自动点击鼠标啊? delphi局域网idtcpserver接收数据问题
代码到处有
现成的例子!不过要细看一下,要不很难理解,我个人觉的这个例子不太好,你可以上网查找一下其他的例子!
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, ImgList, ComCtrls, ToolWin, Grids,
DBGrids, DB, ADODB,ActiveX;type
TForm1 = class(TForm)
Image1: TImage;
Memo1: TMemo;
ImageList1: TImageList;
BitBtn1: TBitBtn;
DataSource1: TDataSource;
ADOQuery1: TADOQuery;
DBGrid1: TDBGrid;
GroupBox1: TGroupBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
Procedure TTobyAdoOver(Sender:Tobject);
public
{ Public declarations }
end;//**-----------更新图片线程----------------**//
type
TTobyIMG = class(TThread)
TmpImg: TImage;
TmpBool:Boolean;
protected
{ Private declarations }
procedure Execute;OverRide;
private
{ Private declarations }
procedure TmpChange;
public
{ Public declarations }
Constructor Create (TmpImage:TImage);
end;//**-----------更新ADO线程----------------**//
type
TTobyAdo = class(TThread)
TmpAdo: TAdoQuery;
TmpBool:Boolean;
protected
{ Private declarations }
procedure Execute;OverRide;
private
{ Private declarations }
procedure TmpLoad;
public
{ Public declarations }
Constructor Create (TpAdo:TAdoquery);
end;var
Form1: TForm1;
TobyIMG:TTobyIMG;
TobyAdo:TTobyAdo;implementation{$R *.dfm}
//**-----------------更新图片线程-----------**//
Constructor TTobyIMG.Create(TmpImage:TImage);
Begin
FreeOnTerminate:=True;
TmpImg:=TmpImage;
TmpBool:=True;
Inherited Create(False);
end;Procedure TTobyIMG.Execute;
Begin
repeat
sleep(500);
Synchronize(TmpChange);
until Terminated;
end;Procedure TTobyIMG.TmpChange;
begin
if TmpBool then TmpImg.Picture.LoadFromFile('2.bmp')
else TmpImg.Picture.LoadFromFile('1.bmp');
TmpBool:=Not TmpBool;
end;
//**--------------更新ADO线程---------------**//
Constructor TTobyAdo.Create(TpAdo:TAdoQuery);
begin
FreeOnTerminate:=True;
TmpAdo:=TpAdo;
inherited Create(False);
end;Procedure TTobyAdo.Execute;
begin
TmpLoad;
end;Procedure TTobyAdo.TmpLoad;
begin
CoInitialize(nil);//必须装载该函数在ActiveX类里
sleep(3000);
TmpAdo.Open;
CoUninitialize; //释放com装载
end;Procedure TForm1.TTobyAdoOver(Sender:Tobject);
begin
TobyIMG.Terminate;
end;procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Adoquery1.Close;
TobyAdo:=TTobyAdo.Create(Adoquery1);
TobyIMG:=TTobyIMG.Create(image1);
TobyAdo.OnTerminate:=TTobyAdoOver;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
TobyIMG:=TTobyIMG.Create(image1);
end;procedure TForm1.Button2Click(Sender: TObject);
begin
TobyIMG.Suspend;
end;procedure TForm1.Button3Click(Sender: TObject);
begin
tobyIMG.Resume;
end;procedure TForm1.Button4Click(Sender: TObject);
begin
TobyIMG.Terminate;
end;
end.