貌似初学,很多问题。。
我用了个多线程
//界面线程里
procedure a();
var
i:integer;
begin
//以下一共耗时大概20秒
listbox1.items.add('开始抓页面');
//抓取网页1
//抓取网页2
//抓取网页3
listbox1.items.add('抓页面结束');
end; //线程单元
procedure TTestThread.run;
begin
mainform1.a();
mainform1.items.add('一次抓页面结束');
end; procedure TTestThread.Execute;
var
I: Integer;
begin
while(true) do
begin
run;
sleep(1000);
end;
end;
不知道为什么,运行一段时间后,就停止了。listbox最后一条显示的是'开始抓页面',运行期间没有出现任何错误提示或者异常,咋会这样列
我用了个多线程
//界面线程里
procedure a();
var
i:integer;
begin
//以下一共耗时大概20秒
listbox1.items.add('开始抓页面');
//抓取网页1
//抓取网页2
//抓取网页3
listbox1.items.add('抓页面结束');
end; //线程单元
procedure TTestThread.run;
begin
mainform1.a();
mainform1.items.add('一次抓页面结束');
end; procedure TTestThread.Execute;
var
I: Integer;
begin
while(true) do
begin
run;
sleep(1000);
end;
end;
不知道为什么,运行一段时间后,就停止了。listbox最后一条显示的是'开始抓页面',运行期间没有出现任何错误提示或者异常,咋会这样列
解决方案 »
- 我的天.我的bpl文件在哪?
- 完了 我要死了!软件报错误,谢谢大家帮忙!
- fastreport主从表字段计算问题?
- rave设计
- 高手!能帮我吗?一个菜鸟的问题!
- 请问使用ISAPI写web服务器应用程序,怎么实现多人同时访问啊?
- dbgrid中的数据被部分修改,我只想把修改过的数据存回数据库,而不想把整个dbgrid再存一遍,大家给个建议先
- FastReport打印主细StringGrid问题请教!!!
- 如何实现按装程序时自动生成数据源(在线等候)??
- 怎样控制edit必须输入是数字呀,?????必须用asc码吗? 帮写一下代码?给 10分了 !
- 晕,一个查询还挺烦,求教
- Delphi7调用XFire下的WebService出错
procedure TMyThread.PushTheButton;begin
Button1.Click();
end;procedure TMyThread.Execute;
begin
...
Synchronize(PushTheButton);
...
end;
var
I: Integer;
begin
while(true) do
begin
Synchronize(run);
sleep(1000);
end;
end;
while(true) do
begin
// ...
end; 应该写:
repeat
// ...
until Terminated;
如果是idhttp给他设置一个 ReadTimeout = 5000;试试
procedure TTestThread.run;
begin
mainform1.a();
mainform1.items.add('一次抓页面结束');
end; 1 我的天,你还没了解VCL的线程是不安全线程,如果要在线程里调用进程的对象的话,要加保护,就是同步,
Synchronize(run); 这样写是正确的。2 你多个线程读取一个文件就牵扯到同步、互斥等问题,你是如何解决的?不知考虑否,否者只能叫多个单线程。