procedure TForm1.Timer1Timer(Sender: TObject); //这是一个次过程的TIMER
begin
Check ;
end ;procedure TForm1.Check; //这是调用的一个IDHTTP的POST过程
var
paralist:Tstringlist ;
s1:TStringStream ;
begin
paralist := Tstringlist.Create ;
s1 := TStringStream.Create('');
PARALIST.ADD('na='+na) ; //全局变量,已经获得此值
PARALIST.ADD('pa='+pa) ; //全局变量,已经获得此值
try
idhttp2.Post('http://www.csdn.net/Check.Asp', paralist, s1) ; //用IDHTTP的POST来获得远程HTML代码
form1.memo1.text := s1.DataString ;
except
end;
paralist.Free ;
s1.Free ;
//......以下是检测返回的HTML状态代码
end ;
问题:这个timer1要根据主界面的运行状态来随时激活,有时一分钟,有时十分钟,时间不定;
我现在想要在这个CHECK运行时,不影响我主界面的工作,即这个CHECK能不能以独立于主界面的形式来工作。
可否做成一个线程,如何做?如何调用?
begin
Check ;
end ;procedure TForm1.Check; //这是调用的一个IDHTTP的POST过程
var
paralist:Tstringlist ;
s1:TStringStream ;
begin
paralist := Tstringlist.Create ;
s1 := TStringStream.Create('');
PARALIST.ADD('na='+na) ; //全局变量,已经获得此值
PARALIST.ADD('pa='+pa) ; //全局变量,已经获得此值
try
idhttp2.Post('http://www.csdn.net/Check.Asp', paralist, s1) ; //用IDHTTP的POST来获得远程HTML代码
form1.memo1.text := s1.DataString ;
except
end;
paralist.Free ;
s1.Free ;
//......以下是检测返回的HTML状态代码
end ;
问题:这个timer1要根据主界面的运行状态来随时激活,有时一分钟,有时十分钟,时间不定;
我现在想要在这个CHECK运行时,不影响我主界面的工作,即这个CHECK能不能以独立于主界面的形式来工作。
可否做成一个线程,如何做?如何调用?
procedure TForm1.Timer1Timer(Sender: TObject);
var
mythread : TIdhttppost;
begin
mythread := TIdhttppost.Create(false);
end;
线程:
unit Unit2;interfaceuses
Classes;type
TIdhttppost = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end;implementationuses Unit1; //注意引用全局变量参数模块
procedure TIdhttppost.Execute;
var
paralist:Tstringlist ;
s1:TStringStream ;
begin
FreeOnTerminate := True;
{ Place thread code here }
paralist := Tstringlist.Create ;
s1 := TStringStream.Create('');
PARALIST.ADD('na='+na) ; //全局变量,已经获得此值
PARALIST.ADD('pa='+pa) ; //全局变量,已经获得此值
try
idhttp2.Post('http://www.csdn.net/Check.Asp', paralist, s1) ; //用IDHTTP的POST来获得远程HTML代码
form1.memo1.text := s1.DataString ;
except
end;
paralist.Free ;
s1.Free ;
//......以下是检测返回的HTML状态代码end;end.
这一句不能放在线程里面,会导致不可知的异常。把这句话封装到线程的一个过程中,然后通过Synchronize()来调用。