[win32::GUI问二,求助]杀不完的wget

[win32::GUI问二,求助]杀不完的wget

请教各位热心的大侠:

我用win32::gui或TK进行图形编程时,想下载有200个链接的网页(链接保存在文本文件中了)

我用foreach来读取文本文件,并使用了多线程,启动了3个wget来下载。

请问在下载过程中,按“停止”按钮(如何设计?)停止下载?

我用杀进程的方法,因为处于循环中,老是有杀不完的wget。

------------------------------------------------------------------------------------------------
其实我的问题就是在进行图形编程时,如何停止正在运行的程序(不是退出关闭程序。)



QUOTE:
原帖由 3chi01 于 2008-9-17 21:20 发表
请教各位热心的大侠:

我用win32::gui或TK进行图形编程时,想下载有200个链接的网页(链接保存在文本文件中了)

我用foreach来读取文本文件,并使用了多线程,同时启动了多个wget来下载。

请问如何在下 ...

應該是Win32::GUI吧,
強列建議您改回來,
免得...
楼上的兄弟,请给点具体意见。我初学,不明白呀。

其实我的问题就是在进行图形编程时,如何停止正在运行的程序。(不是退出关闭程序。)
在循环里面加个flag,当flag为真时执行wget。
然后在点停止按钮的时候,设置flag为假。
然后再杀进程(其实建议不杀比较好)。


QUOTE:
原帖由 odacharlee 于 2008-9-17 21:39 发表
在循环里面加个flag,当flag为真时执行wget。
然后在点停止按钮的时候,设置flag为假。
然后再杀进程(其实建议不杀比较好)。

多谢odacharlee的指点,想不到这么及时。很感动。

能给个简单的例子吗?或示意图吗?实在很想解决这个问题。谢谢了。
例子不太好做,不知道你的程序是怎么实现的。只说说思路吧。。

你的程序的主要部分应该是这样吧。。

while(1) {
  if wget进程数 < 3 {
    启动一个wget;
  }
  sleep 1;
}


那么改成下面的样子

flag = true;
while(flag) {
  if wget进程数 < 3 {
    启动一个wget;
  }
  sleep 1;
}
依次杀掉正在运行的wget;

stop按钮的处理:
flag = false;


具体实现方法得你自己去考虑了。
呵呵,多谢了!赶紧试试。
不知道你是怎么调用wget的, wget应该在另一个进程空间中, 没办法终止一个正在进行的wget吧, 除非杀进程.

我觉得可以用LWP模块,代替wget吧,这样可控性更高些.
8楼的想法很不错。LWP用来处理HTTP请求简直是完美的


QUOTE:
#原帖由 odacharlee 于 2008-9-17 22:12 发表
while(1) {
  if wget进程数 < 3 {
    启动一个wget;
  }
  sleep 1;
}


那么改成下面的样子

flag = true;
while(flag) {
  if wget进程数 < 3 {
    启动一个wget;
  }
  sleep 1;
}
依次杀掉正在运行的wget;

stop按钮的处理:
flag = false;

好像不行,按下stop按钮后,并没有马上中止wget呀!要等foreach结束才起作用。