怎样使控件运行在线程下(100分)

  • 主题发起人 主题发起人 hejiesi
  • 开始时间 开始时间
H

hejiesi

Unregistered / Unconfirmed
GUEST, unregistred user!
我制作了一个播放MIDI的控件,使用高精度的定时器向MIDI Device定时地发送MIDI指令,
但当我移动窗体的时候就停止播放,有什莫办法使它运行在一个独立的线程下.
 
使播放的事件在一个线程里即可。
该线程就可以响应消息循环了。
方法,delphi下有多线程排序的例子
 
跟在程序中一样
 
所有对MIDI的控件操作移至一个线程里(包括创建、释放)
 
假如我的控件名为midiplayer 我现在的用法如下
procedure TForm1.FormCreate(Sender: TObject);
begin
midiplayer:=Tmidiplayer.create;
end;

procedure Button1Click(sender:tobject);
begin
midiplayer.filename:='c:/mmm.mid';
midiplayer.play;
end;

这样当移动窗体的时候就停止播放
应该怎样做才对,兴旺打下们能详细的指教一下.
 
type
TMidiThread = class(TThread)
private
Fmidi : Tmidiplayer;
procedure Play;
{ Private declarations }
protected
procedure Execute;
override;
public
constructor Create(isRun:Boolean);
end;

implementation
constructor TMidiThread.Create(isRun:Boolean);
begin
Fmidi:=Tmidiplayer.Create;
inherited Create(isRun);
end;
procedure TMidiThread.Play;
begin
fmidi.filename:='c:/mmm.mid';
fmidi.play;
end;
procedure TMidiThread.Execute;
begin
{ Place thread code here }
Play;
end;
 
接受答案了.
 
后退
顶部