问题如上,现在用一个CreateThread来建立一个线程,做一个查询数据库操作并将结果发送到远程的webservives。线程是放在一个timer控件里面定时触发建立的,
现在有个问题,我实在看不出我线程函数里面有那个资源没有用完释放的,但在线程第一次触发运行后,第二行又触发建立线程。程序就会出错,直接挂掉,这个程序是后台运行。要一天24小时运行。这样肯定不行。
线程里应该是有什么东西没清完。因为如果线程在连接数据库这一段代码出错(加了保护的),就会直接跳过后面的查询数据库并上传webservices数据这部分,直接到最后的释放资源部分,然后线程函数结束,这样的话,线程会一直运行,不会出错,这样看来,问题应该在查询数据库和上传webservices部分,可我实在没办法看出来是那里有问题,下面为代码,各位帮我看看。分太少了,没法。菜鸟啊。下面是线程函数单元。我把这个线程函数直接放在一个单元里,方便操作。unit HYLoad7ThreadFun;interfaceuses Windows,SysUtils,IniFiles,ADODB,XSBuiltIns,InvokeRegistry,Rio, SOAPHTTPClient,
ActiveX;type
TPstring = ^String;
//线程主过程
procedure UpDataFun(Connectstr: TPstring);stdcall;var ThreadFettle : Boolean;implementation
uses CommonFunctionUnit,hjwebservice,MainForm;const WebServiceSoap_location='http://10.194.35.58/fspaapp/hjwebservice.asmx';
//sss='Provider=MSDAORA.1;Password=hyzhhyzh;User ID=hyzh;Data Source=ORA9I;Persist Security Info=True';
var HY_load7: ArrayOfHY_ZXQJ;
sWebServiceSoap :WebServiceSoap;
zhuangicount:Integer=0;
xiecount :Integer=0;
AdoErrorMsg:Integer;{定义上传数据过程,此过程从数据库取出数据并打包到数组}
procedure UpDataFun(Connectstr: TPstring);stdcall;
var
StrSQL,str1,str2:String;
i :Integer;
path:AnsiString;
TempStr:string;
ini:TIniFile;
zhuan7jiaQuery,xie7jiaQuery:TADOQuery;
f:TextFile;
k: Boolean ;
HTTPRIO1: THTTPRIO;
begin
CoInitialize(nil);
ThreadFettle:=True;
//TempStr:=Connectstr^;
path := ExtractFilePath(ParamStr(0)) + 'HYConfigFile.Ini';
Ini := TIniFile.Create(path);
//strZM := Ini.ReadString('HJZongHeParameterConfig','ShangBaoZM',''); //从配置文件读取上报站名
Ini.Free;////释放INI文件 str1:='select * from td_load where RXSJ>TO_DATE(''' + FormatDateTime('yyyy-mm-dd',now-1) + ''',''yyyy-mm-dd'')'; //只取一天的数据
str2:='select * from td_unload where RXSJ>TO_DATE(''' + FormatDateTime('yyyy-mm-dd',now-1) + ''',''yyyy-mm-dd'')';
try
zhuan7jiaQuery:=TADOQuery.Create(nil);
zhuan7jiaQuery.ConnectionString:=Connectstr^;
//zhuan7jiaQuery.SQL.Clear;
zhuan7jiaQuery.SQL.Add(str1); xie7jiaQuery:=TADOQuery.Create(nil);
xie7jiaQuery.ConnectionString:=Connectstr^;
xie7jiaQuery.SQL.Clear;
xie7jiaQuery.SQL.Add(str2); zhuan7jiaQuery.Open;
xie7jiaQuery.Open;
zhuangicount:=zhuan7jiaQuery.RecordCount;
xiecount:=xie7jiaQuery.RecordCount; if (zhuan7jiaQuery.RecordCount>0) or (xie7jiaQuery.RecordCount>0)then
begin
SetLength(HY_load7,zhuangicount + xiecount);
for i:=0 to zhuangicount-1 do
begin
HY_load7[i] :=HY_ZXQJ.Create;
HY_load7[i].ZCID :=Trim(zhuan7jiaQuery.fieldbyname('ZCID').AsString);
HY_load7[i].JHH :=Trim(zhuan7jiaQuery.fieldbyname('JHH').AsString);
HY_load7[i].HP :=Trim(zhuan7jiaQuery.fieldbyname('HP').AsString);
HY_load7[i].CH :=Trim(zhuan7jiaQuery.fieldbyname('CH').AsString);
HY_load7[i].CX :=Trim(zhuan7jiaQuery.fieldbyname('CX').AsString);
if zhuan7jiaQuery.fieldbyname('BZ').AsString<>'' then
HY_load7[i].BZ :=zhuan7jiaQuery.fieldbyname('BZ').AsFloat;
if zhuan7jiaQuery.fieldbyname('HPZ').AsString<>'' then
HY_load7[i].HPZ :=zhuan7jiaQuery.fieldbyname('HPZ').AsFloat;
HY_load7[i].PM :=Trim(zhuan7jiaQuery.fieldbyname('PM').AsString);
HY_load7[i].PL :=Trim(zhuan7jiaQuery.fieldbyname('PL').AsString);
HY_load7[i].ZCDD :=Trim(zhuan7jiaQuery.fieldbyname('ZCDD').AsString);
HY_load7[i].DZM :=Trim(zhuan7jiaQuery.fieldbyname('DZM').AsString);
HY_load7[i].FZM :=Trim(zhuan7jiaQuery.fieldbyname('FZM').AsString);
HY_load7[i].DJ :=Trim(zhuan7jiaQuery.fieldbyname('DJ').AsString);
HY_load7[i].PBH :=Trim(zhuan7jiaQuery.fieldbyname('PBH').AsString);
HY_load7[i].SHR_ :=Trim(zhuan7jiaQuery.fieldbyname('SHR').AsString);
HY_load7[i].GDMC :=Trim(zhuan7jiaQuery.fieldbyname('GDMC').AsString);
HY_load7[i].TYR :=Trim(zhuan7jiaQuery.fieldbyname('TYR').AsString);
if zhuan7jiaQuery.fieldbyname('JS').AsString<>'' then
HY_load7[i].JS :=zhuan7jiaQuery.fieldbyname('JS').AsInteger;
if zhuan7jiaQuery.fieldbyname('DDSJ').AsString<>'' then
HY_load7[i].DDSJ :=DateTimeToXSDateTime(zhuan7jiaQuery.fieldbyname('DDSJ').AsDateTime);
if zhuan7jiaQuery.fieldbyname('RXSJ').AsString<>'' then
HY_load7[i].RXSJ :=DateTimeToXSDateTime(zhuan7jiaQuery.fieldbyname('RXSJ').AsDateTime);
if zhuan7jiaQuery.fieldbyname('KSSJ').AsString<>'' then
HY_load7[i].KSSJ :=DateTimeToXSDateTime(zhuan7jiaQuery.fieldbyname('KSSJ').AsDateTime);
if zhuan7jiaQuery.fieldbyname('JSSJ').AsString<>'' then
HY_load7[i].JSSJ :=DateTimeToXSDateTime(zhuan7jiaQuery.fieldbyname('JSSJ').AsDateTime);
if zhuan7jiaQuery.fieldbyname('CXSJ').AsString<>'' then
HY_load7[i].CXSJ :=DateTimeToXSDateTime(zhuan7jiaQuery.fieldbyname('CXSJ').AsDateTime);
if zhuan7jiaQuery.fieldbyname('ZCRQ').AsString<>'' then
HY_load7[i].ZCRQ :=DateTimeToXSDateTime(zhuan7jiaQuery.fieldbyname('ZCRQ').AsDateTime);
HY_load7[i].JSL :=Trim(zhuan7jiaQuery.fieldbyname('JSL').AsString);
HY_load7[i].DJR :=Trim(zhuan7jiaQuery.fieldbyname('DJR').AsString);
if zhuan7jiaQuery.fieldbyname('BCSJ').AsString<>'' then
HY_load7[i].BCSJ :=DateTimeToXSDateTime(zhuan7jiaQuery.fieldbyname('BCSJ').AsDateTime);
HY_load7[i].ZCFA :=Trim(zhuan7jiaQuery.fieldbyname('ZCFA').AsString);
HY_load7[i].ZCZYLB:=Trim(zhuan7jiaQuery.fieldbyname('ZCZYLB').AsString);
HY_load7[i].ZCCLLB:=Trim(zhuan7jiaQuery.fieldbyname('ZCCLLB').AsString);
HY_load7[i].ZCTLSJ:=Trim(zhuan7jiaQuery.fieldbyname('ZCTLSJ').AsString);
HY_load7[i].ZHCYSCS:=Trim(zhuan7jiaQuery.fieldbyname('ZHCYSCS').AsString);
HY_load7[i].ZHCYSSJ:=Trim(zhuan7jiaQuery.fieldbyname('ZHCYSSJ').AsString);
HY_load7[i].ZHCYSFY:=Trim(zhuan7jiaQuery.fieldbyname('ZHCYSFY').AsString);
HY_load7[i].PBH1 :=Trim(zhuan7jiaQuery.fieldbyname('PBH1').AsString);
HY_load7[i].PBH2 :=Trim(zhuan7jiaQuery.fieldbyname('PBH2').AsString);
HY_load7[i].PBH3 :=Trim(zhuan7jiaQuery.fieldbyname('PBH3').AsString);
HY_load7[i].PBH4 :=Trim(zhuan7jiaQuery.fieldbyname('PBH4').AsString);
HY_load7[i].SFH1 :=Trim(zhuan7jiaQuery.fieldbyname('SFH1').AsString);
HY_load7[i].SFH2 :=Trim(zhuan7jiaQuery.fieldbyname('SFH2').AsString);
//HY_load7[i].FZM := 发站名,以后加我们的站名略码字段
HY_load7[i].ZXBZ :='Z';
zhuan7jiaQuery.Next;
end;
代码没完,后面还有,
现在有个问题,我实在看不出我线程函数里面有那个资源没有用完释放的,但在线程第一次触发运行后,第二行又触发建立线程。程序就会出错,直接挂掉,这个程序是后台运行。要一天24小时运行。这样肯定不行。
线程里应该是有什么东西没清完。因为如果线程在连接数据库这一段代码出错(加了保护的),就会直接跳过后面的查询数据库并上传webservices数据这部分,直接到最后的释放资源部分,然后线程函数结束,这样的话,线程会一直运行,不会出错,这样看来,问题应该在查询数据库和上传webservices部分,可我实在没办法看出来是那里有问题,下面为代码,各位帮我看看。分太少了,没法。菜鸟啊。下面是线程函数单元。我把这个线程函数直接放在一个单元里,方便操作。unit HYLoad7ThreadFun;interfaceuses Windows,SysUtils,IniFiles,ADODB,XSBuiltIns,InvokeRegistry,Rio, SOAPHTTPClient,
ActiveX;type
TPstring = ^String;
//线程主过程
procedure UpDataFun(Connectstr: TPstring);stdcall;var ThreadFettle : Boolean;implementation
uses CommonFunctionUnit,hjwebservice,MainForm;const WebServiceSoap_location='http://10.194.35.58/fspaapp/hjwebservice.asmx';
//sss='Provider=MSDAORA.1;Password=hyzhhyzh;User ID=hyzh;Data Source=ORA9I;Persist Security Info=True';
var HY_load7: ArrayOfHY_ZXQJ;
sWebServiceSoap :WebServiceSoap;
zhuangicount:Integer=0;
xiecount :Integer=0;
AdoErrorMsg:Integer;{定义上传数据过程,此过程从数据库取出数据并打包到数组}
procedure UpDataFun(Connectstr: TPstring);stdcall;
var
StrSQL,str1,str2:String;
i :Integer;
path:AnsiString;
TempStr:string;
ini:TIniFile;
zhuan7jiaQuery,xie7jiaQuery:TADOQuery;
f:TextFile;
k: Boolean ;
HTTPRIO1: THTTPRIO;
begin
CoInitialize(nil);
ThreadFettle:=True;
//TempStr:=Connectstr^;
path := ExtractFilePath(ParamStr(0)) + 'HYConfigFile.Ini';
Ini := TIniFile.Create(path);
//strZM := Ini.ReadString('HJZongHeParameterConfig','ShangBaoZM',''); //从配置文件读取上报站名
Ini.Free;////释放INI文件 str1:='select * from td_load where RXSJ>TO_DATE(''' + FormatDateTime('yyyy-mm-dd',now-1) + ''',''yyyy-mm-dd'')'; //只取一天的数据
str2:='select * from td_unload where RXSJ>TO_DATE(''' + FormatDateTime('yyyy-mm-dd',now-1) + ''',''yyyy-mm-dd'')';
try
zhuan7jiaQuery:=TADOQuery.Create(nil);
zhuan7jiaQuery.ConnectionString:=Connectstr^;
//zhuan7jiaQuery.SQL.Clear;
zhuan7jiaQuery.SQL.Add(str1); xie7jiaQuery:=TADOQuery.Create(nil);
xie7jiaQuery.ConnectionString:=Connectstr^;
xie7jiaQuery.SQL.Clear;
xie7jiaQuery.SQL.Add(str2); zhuan7jiaQuery.Open;
xie7jiaQuery.Open;
zhuangicount:=zhuan7jiaQuery.RecordCount;
xiecount:=xie7jiaQuery.RecordCount; if (zhuan7jiaQuery.RecordCount>0) or (xie7jiaQuery.RecordCount>0)then
begin
SetLength(HY_load7,zhuangicount + xiecount);
for i:=0 to zhuangicount-1 do
begin
HY_load7[i] :=HY_ZXQJ.Create;
HY_load7[i].ZCID :=Trim(zhuan7jiaQuery.fieldbyname('ZCID').AsString);
HY_load7[i].JHH :=Trim(zhuan7jiaQuery.fieldbyname('JHH').AsString);
HY_load7[i].HP :=Trim(zhuan7jiaQuery.fieldbyname('HP').AsString);
HY_load7[i].CH :=Trim(zhuan7jiaQuery.fieldbyname('CH').AsString);
HY_load7[i].CX :=Trim(zhuan7jiaQuery.fieldbyname('CX').AsString);
if zhuan7jiaQuery.fieldbyname('BZ').AsString<>'' then
HY_load7[i].BZ :=zhuan7jiaQuery.fieldbyname('BZ').AsFloat;
if zhuan7jiaQuery.fieldbyname('HPZ').AsString<>'' then
HY_load7[i].HPZ :=zhuan7jiaQuery.fieldbyname('HPZ').AsFloat;
HY_load7[i].PM :=Trim(zhuan7jiaQuery.fieldbyname('PM').AsString);
HY_load7[i].PL :=Trim(zhuan7jiaQuery.fieldbyname('PL').AsString);
HY_load7[i].ZCDD :=Trim(zhuan7jiaQuery.fieldbyname('ZCDD').AsString);
HY_load7[i].DZM :=Trim(zhuan7jiaQuery.fieldbyname('DZM').AsString);
HY_load7[i].FZM :=Trim(zhuan7jiaQuery.fieldbyname('FZM').AsString);
HY_load7[i].DJ :=Trim(zhuan7jiaQuery.fieldbyname('DJ').AsString);
HY_load7[i].PBH :=Trim(zhuan7jiaQuery.fieldbyname('PBH').AsString);
HY_load7[i].SHR_ :=Trim(zhuan7jiaQuery.fieldbyname('SHR').AsString);
HY_load7[i].GDMC :=Trim(zhuan7jiaQuery.fieldbyname('GDMC').AsString);
HY_load7[i].TYR :=Trim(zhuan7jiaQuery.fieldbyname('TYR').AsString);
if zhuan7jiaQuery.fieldbyname('JS').AsString<>'' then
HY_load7[i].JS :=zhuan7jiaQuery.fieldbyname('JS').AsInteger;
if zhuan7jiaQuery.fieldbyname('DDSJ').AsString<>'' then
HY_load7[i].DDSJ :=DateTimeToXSDateTime(zhuan7jiaQuery.fieldbyname('DDSJ').AsDateTime);
if zhuan7jiaQuery.fieldbyname('RXSJ').AsString<>'' then
HY_load7[i].RXSJ :=DateTimeToXSDateTime(zhuan7jiaQuery.fieldbyname('RXSJ').AsDateTime);
if zhuan7jiaQuery.fieldbyname('KSSJ').AsString<>'' then
HY_load7[i].KSSJ :=DateTimeToXSDateTime(zhuan7jiaQuery.fieldbyname('KSSJ').AsDateTime);
if zhuan7jiaQuery.fieldbyname('JSSJ').AsString<>'' then
HY_load7[i].JSSJ :=DateTimeToXSDateTime(zhuan7jiaQuery.fieldbyname('JSSJ').AsDateTime);
if zhuan7jiaQuery.fieldbyname('CXSJ').AsString<>'' then
HY_load7[i].CXSJ :=DateTimeToXSDateTime(zhuan7jiaQuery.fieldbyname('CXSJ').AsDateTime);
if zhuan7jiaQuery.fieldbyname('ZCRQ').AsString<>'' then
HY_load7[i].ZCRQ :=DateTimeToXSDateTime(zhuan7jiaQuery.fieldbyname('ZCRQ').AsDateTime);
HY_load7[i].JSL :=Trim(zhuan7jiaQuery.fieldbyname('JSL').AsString);
HY_load7[i].DJR :=Trim(zhuan7jiaQuery.fieldbyname('DJR').AsString);
if zhuan7jiaQuery.fieldbyname('BCSJ').AsString<>'' then
HY_load7[i].BCSJ :=DateTimeToXSDateTime(zhuan7jiaQuery.fieldbyname('BCSJ').AsDateTime);
HY_load7[i].ZCFA :=Trim(zhuan7jiaQuery.fieldbyname('ZCFA').AsString);
HY_load7[i].ZCZYLB:=Trim(zhuan7jiaQuery.fieldbyname('ZCZYLB').AsString);
HY_load7[i].ZCCLLB:=Trim(zhuan7jiaQuery.fieldbyname('ZCCLLB').AsString);
HY_load7[i].ZCTLSJ:=Trim(zhuan7jiaQuery.fieldbyname('ZCTLSJ').AsString);
HY_load7[i].ZHCYSCS:=Trim(zhuan7jiaQuery.fieldbyname('ZHCYSCS').AsString);
HY_load7[i].ZHCYSSJ:=Trim(zhuan7jiaQuery.fieldbyname('ZHCYSSJ').AsString);
HY_load7[i].ZHCYSFY:=Trim(zhuan7jiaQuery.fieldbyname('ZHCYSFY').AsString);
HY_load7[i].PBH1 :=Trim(zhuan7jiaQuery.fieldbyname('PBH1').AsString);
HY_load7[i].PBH2 :=Trim(zhuan7jiaQuery.fieldbyname('PBH2').AsString);
HY_load7[i].PBH3 :=Trim(zhuan7jiaQuery.fieldbyname('PBH3').AsString);
HY_load7[i].PBH4 :=Trim(zhuan7jiaQuery.fieldbyname('PBH4').AsString);
HY_load7[i].SFH1 :=Trim(zhuan7jiaQuery.fieldbyname('SFH1').AsString);
HY_load7[i].SFH2 :=Trim(zhuan7jiaQuery.fieldbyname('SFH2').AsString);
//HY_load7[i].FZM := 发站名,以后加我们的站名略码字段
HY_load7[i].ZXBZ :='Z';
zhuan7jiaQuery.Next;
end;
代码没完,后面还有,
begin
HY_load7[i] :=HY_ZXQJ.Create;
HY_load7[i].XCXHID :=Trim(xie7jiaQuery.fieldbyname('XCXHID').AsString);
HY_load7[i].DDCC :=Trim(xie7jiaQuery.fieldbyname('DDCC').AsString);
HY_load7[i].XCDD :=Trim(xie7jiaQuery.fieldbyname('XCDD').AsString);
if xie7jiaQuery.fieldbyname('XCRQ').AsString<>'' then
HY_load7[i].XCRQ :=DateTimeToXSDateTime(xie7jiaQuery.fieldbyname('XCRQ').AsDateTime);
HY_load7[i].XCZYLB :=Trim(xie7jiaQuery.fieldbyname('XCZYLB').AsString);
HY_load7[i].XCCLLB :=Trim(xie7jiaQuery.fieldbyname('XCCLLB').AsString);
HY_load7[i].XCTLSJ :=Trim(xie7jiaQuery.fieldbyname('XCTLSJ').AsString);
HY_load7[i].XHCYSCS :=Trim(xie7jiaQuery.fieldbyname('XHCYSCS').AsString);
HY_load7[i].XHCYSSJ :=Trim(xie7jiaQuery.fieldbyname('XHCYSSJ').AsString);
HY_load7[i].XHCYSFY :=Trim(xie7jiaQuery.fieldbyname('XHCYSFY').AsString);
HY_load7[i].HP :=Trim(xie7jiaQuery.fieldbyname('HP').AsString);
HY_load7[i].CH :=Trim(xie7jiaQuery.fieldbyname('CH').AsString);
HY_load7[i].CX :=Trim(xie7jiaQuery.fieldbyname('CX').AsString);
HY_load7[i].PM :=Trim(xie7jiaQuery.fieldbyname('PM').AsString);
HY_load7[i].PL :=Trim(xie7jiaQuery.fieldbyname('PL').AsString);
HY_load7[i].FZM :=Trim(xie7jiaQuery.fieldbyname('FZM').AsString);
HY_load7[i].DZM :=Trim(xie7jiaQuery.fieldbyname('DZM').AsString);
HY_load7[i].PBH :=Trim(xie7jiaQuery.fieldbyname('PBH').AsString);
HY_load7[i].TYR :=Trim(xie7jiaQuery.fieldbyname('TYR').AsString);
HY_load7[i].SHR_ :=Trim(xie7jiaQuery.fieldbyname('SHR').AsString);
HY_load7[i].GDMC :=Trim(xie7jiaQuery.fieldbyname('GDMC').AsString);
if xie7jiaQuery.fieldbyname('JS').AsString<>'' then
HY_load7[i].JS :=xie7jiaQuery.fieldbyname('JS').AsInteger;;
if xie7jiaQuery.fieldbyname('DDSJ').AsString<>'' then
HY_load7[i].DDSJ :=DateTimeToXSDateTime(xie7jiaQuery.fieldbyname('DDSJ').AsDateTime);
if xie7jiaQuery.fieldbyname('RXSJ').AsString<>'' then
HY_load7[i].RXSJ :=DateTimeToXSDateTime(xie7jiaQuery.fieldbyname('RXSJ').AsDateTime);
if xie7jiaQuery.fieldbyname('KSSJ').AsString<>'' then
HY_load7[i].KSSJ :=DateTimeToXSDateTime(xie7jiaQuery.fieldbyname('KSSJ').AsDateTime);
if xie7jiaQuery.fieldbyname('JSSJ').AsString<>'' then
HY_load7[i].JSSJ :=DateTimeToXSDateTime(xie7jiaQuery.fieldbyname('JSSJ').AsDateTime);
if xie7jiaQuery.fieldbyname('CXSJ').AsString<>'' then
HY_load7[i].CXSJ :=DateTimeToXSDateTime(xie7jiaQuery.fieldbyname('CXSJ').AsDateTime);
HY_load7[i].JSL :=Trim(xie7jiaQuery.fieldbyname('JSL').AsString);
HY_load7[i].DJR :=Trim(xie7jiaQuery.fieldbyname('DJR').AsString);
if xie7jiaQuery.fieldbyname('BCSJ').AsString<>'' then
HY_load7[i].BCSJ :=DateTimeToXSDateTime(xie7jiaQuery.fieldbyname('BCSJ').AsDateTime);
HY_load7[i].PBH1 :=Trim(xie7jiaQuery.fieldbyname('PBH1').AsString);
HY_load7[i].PBH2 :=Trim(xie7jiaQuery.fieldbyname('PBH2').AsString);
HY_load7[i].PBH3 :=Trim(xie7jiaQuery.fieldbyname('PBH3').AsString);
HY_load7[i].PBH4 :=Trim(xie7jiaQuery.fieldbyname('PBH4').AsString);
HY_load7[i].SFH1 :=Trim(xie7jiaQuery.fieldbyname('SFH1').AsString);
HY_load7[i].SFH2 :=Trim(xie7jiaQuery.fieldbyname('SFH2').AsString);
if xie7jiaQuery.fieldbyname('HPZ').AsString<>'' then
HY_load7[i].HPZ :=xie7jiaQuery.fieldbyname('HPZ').AsFloat;
if xie7jiaQuery.fieldbyname('BZ').AsString<>'' then
HY_load7[i].BZ :=xie7jiaQuery.fieldbyname('BZ').AsFloat;
HY_load7[i].ZXBZ :='X';
xie7jiaQuery.Next;
end;
end;
except
on E:Exception do
begin
CommonFunctionUnit.AccessLog('log\装七甲log.log',E.Message,-2,zhuangicount);
CommonFunctionUnit.AccessLog('log\卸七甲log.log',E.Message,-2,xiecount);
AdoErrorMsg := 1; end;
end;
if AdoErrorMsg <> 1 then
begin
if HY_load7<>nil then
begin
HTTPRIO1:=THTTPRIO.Create(nil);
HTTPRIO1.HTTPWebNode.Agent:='Borland SOAP 1.2';
HTTPRIO1.HTTPWebNode.UseUTF8InHeader:=True;
HTTPRIO1.WSDLLocation:= WebServiceSoap_location;
SWebServiceSoap := (HTTPRIO1 as WebServiceSoap);
sWebServiceSoap := GetWebServiceSoap(False,WebServiceSoap_location,HTTPRIO1);
try
k := SWebServiceSoap.AddHY_ZXQJ(HY_load7);
if k then
begin
CommonFunctionUnit.AccessLog('log\装七甲log.log','',1,zhuangicount);
CommonFunctionUnit.AccessLog('log\卸七甲log.log','',1,xiecount);
end
else
begin
CommonFunctionUnit.AccessLog('log\装七甲log.log','',0,zhuangicount);
CommonFunctionUnit.AccessLog('log\卸七甲log.log','',0,xiecount);
end;
except
on E:Exception do
begin
CommonFunctionUnit.AccessLog('log\装七甲log.log',E.Message,-1,zhuangicount);
CommonFunctionUnit.AccessLog('log\卸七甲log.log',E.Message,-1,xiecount);
end;
end;
HTTPRIO1.Free;
end;
end;
if HY_load7<>nil then
begin
for i:=Length(HY_load7)-1 downto 0 do if Assigned(HY_load7[i]) then HY_load7[i].Free;
end; zhuan7jiaQuery.Free;
xie7jiaQuery.Free;
CoUninitialize;
ThreadFettle:=False;
MainForm.ThreadI:=1;
end;
end.
你可以写个简单的类似问题的DEMO 贴出来,让大家看下!
CoInitialize(nil);
ThreadFettle:=True;
这2句你应该调换位置!我想ThreadFettle:=True;你这句的作用应该是想该函数只能运行一个实例吧!如果你在你的定时器里面没有判断ThreadFettle:=True;的话,你还应该在begin下面第一句 先判断