我用如下办法创建线程并使其运行
th1:=tlistThread.Create(true);//创建线程1
th1.Resume;//开始执行这个线程大概结构如下
a:=0;
while a=0 do
begin
....
s:=idhttp.get('http://xxx.xxx.xxx');//idhttp为动态创建
....
end;
这个线程是不会结束的。
不过,我发现奇怪现象,不知道过多少时间(几分钟或几十分钟吧),这个线程会被从头至尾重新执行,也就是一个线程会有几个副本同时被运行,导致结果的混乱。我就奇怪了,程序中只有一次启动了这个线程,这个线程怎么每隔一段时间就启动一个副本呢?也就是这个线程在不同的时间被同时运行多次,什么原因?程序中只在开头部分启动了一次线程,其他地方再无启动线程的地方了,郁闷!!!
th1:=tlistThread.Create(true);//创建线程1
th1.Resume;//开始执行这个线程大概结构如下
a:=0;
while a=0 do
begin
....
s:=idhttp.get('http://xxx.xxx.xxx');//idhttp为动态创建
....
end;
这个线程是不会结束的。
不过,我发现奇怪现象,不知道过多少时间(几分钟或几十分钟吧),这个线程会被从头至尾重新执行,也就是一个线程会有几个副本同时被运行,导致结果的混乱。我就奇怪了,程序中只有一次启动了这个线程,这个线程怎么每隔一段时间就启动一个副本呢?也就是这个线程在不同的时间被同时运行多次,什么原因?程序中只在开头部分启动了一次线程,其他地方再无启动线程的地方了,郁闷!!!
解决方案 »
- delphi xe2报CoInitialize has not been called错误
- 我想开发一个C/S系统
- 如何关闭某一网络端口?
- 调用webserver接口出错
- delphi 的ado和oracle连接的问题?
- 询问怎么样在程序中利用SQL Server的权限功能?(高手看看,不一定要解决)..HOHO
- #####有关数据精度的问题,请大家来看看!!(一定给分)######
- DELPHI 还是截取字符串问题,求大神~~~
- delphi perform()与SendMessage()有什么区别,前者在什么情况下应用.能不能给个例子
- 100分,如何动态建立ODBC,如果没有设置好ODBC就动态建一个?
- 如何实现像IDE中鼠标拖拽全选控件的功能?
- 为什么一些大软件喜欢把用户数据放在“我的文档”下?
begin
....
idhttp 每次在这里新创建?
s:=idhttp.get('http://xxx.xxx.xxx');//idhttp为动态创建
....
end;
现在我应对的办法是:
设置一个全局变量cx
线程每自己启动一次我就记录一次,当CX>1 时,我就EXIT,这样的做法对不对?貌视这样线程资源未释放,大家给点意见。