为什么无法结束这个子线程?似乎是回调函数的问题,把回调函数去掉就没有问题了.
type
TCCDThread = class(TThread)
private
HHV: HWND; protected
procedure Execute; override;
public
constructor Create(aFlag: boolean);
destructor Destroy; override;
end;一个全局回调函数
function aSnapCallBack(pInfo: PHV_SNAP_INFO): integer;
begin
//进行图象转换和保存为JPEG格式的操作
end;constructor TCCDThread.Create(aFlag: boolean);begin
//设置CCD的操作 Inherited Create(aFlag);
end;destructor TCCDThread.Destroy;
begin
//停止CCD采集和释放资源 inherited;
end;procedure TCCDThread.Execute;
begin
FreeOnTerminate:=True;
//设置回调函数
HVOpenSnap(HHV,aSnapCallBack,aPointer);
//开始CCD采集
HVStartSnap(HHV,ppBuff,1); while not Terminated do
begin
sleep(1000);
end;
end;//线程运行后能正常的显示和保存图象,但在主线程中使用
CCDThread.Suspend;
CCDThread.Terminate;
不能停止线程
type
TCCDThread = class(TThread)
private
HHV: HWND; protected
procedure Execute; override;
public
constructor Create(aFlag: boolean);
destructor Destroy; override;
end;一个全局回调函数
function aSnapCallBack(pInfo: PHV_SNAP_INFO): integer;
begin
//进行图象转换和保存为JPEG格式的操作
end;constructor TCCDThread.Create(aFlag: boolean);begin
//设置CCD的操作 Inherited Create(aFlag);
end;destructor TCCDThread.Destroy;
begin
//停止CCD采集和释放资源 inherited;
end;procedure TCCDThread.Execute;
begin
FreeOnTerminate:=True;
//设置回调函数
HVOpenSnap(HHV,aSnapCallBack,aPointer);
//开始CCD采集
HVStartSnap(HHV,ppBuff,1); while not Terminated do
begin
sleep(1000);
end;
end;//线程运行后能正常的显示和保存图象,但在主线程中使用
CCDThread.Suspend;
CCDThread.Terminate;
不能停止线程
但问题是要使CCD连续的采集图象就必须先用这个函数,同时也需要将这些操作放在子线程中进行,有没有什么解决办法?????