"是否线程运行过程中不允许创建新的对象实例?" 是允许的。
Delphi我没玩过。尝试着建议一下:
确定线程A在运行中,trace进去,在不执行的这一行的前一行加断点看看。
确定你的调用方法正确,Tplayobject没有失效,参数没问题。
改变这句话在过程中的位置看看。
Delphi我没玩过。尝试着建议一下:
确定线程A在运行中,trace进去,在不执行的这一行的前一行加断点看看。
确定你的调用方法正确,Tplayobject没有失效,参数没问题。
改变这句话在过程中的位置看看。
我的调试方法是没问题的吧。我在Tplayobject的create事件中设置了断点了,发现没有执行到那个断点中。
而当我把playobject:=Tplayobject.create(channel,soundfile);
放到其它地方如:Tform.create中的时候发现该实例是可以 创建的。
procedure TDetectThread.Execute;
var
i:integer;
Caller:Pchar;
playObject:TPlayThread;
begin while not(queryClose) do
begin
for i:=0 to MaxChannels-1 do
begin
if TV_RingDetect(i)>0 then
begin
TV_OffHookCtrl(i);
TV_ReceiveCallingId(i,Caller,CallerID_Len); //我单步执行到这里还可以运行的
PlayObject:=TplayThread.Create(i,'Caller'); //但下面这一句就是不执行。请问原因?
playlist.Add(playObject);
end;
end;
end;
end;
这时,PlayObject是什么值?
有无类似GetLastError的可用?能看看发生了什么错误。
Delphi实在是不懂,硬着头皮瞎出主意啦。
没发现任何error可以捕捉的。**sigh!
ericzhangali谢谢你的参与!