提这样一个问题:
    兄弟们在扫描网络上某计算机端口的时候是怎么样做的?总共有65535个端口
即使是扫描前255个端口,如果用FOR 循环,主进程会暂时死掉无法响应任何事件。但为什么我用了一个线程来执行扫描端口的事件,并且优先级调到最低了,它居然还是会导致主进程无法响应?
    真是郁闷啊!
    有哪位兄弟好心帮我解决这个问题,我会求上帝会保佑他不得非典。

解决方案 »

  1.   

    假设你是在某个按纽的单击事件中写的象这样from1.button1click(sender:tobject);
    var
    xx:你定义的线程对象
    begin
      xx:=你定义的线程对象.execute;
    end;
    打个比方,那这样的话,程序执行到 xx:=你定义的线程对象.execute时,只创立一个线程,就是你所谓的分线程,但这样其实与没有创建线程一样。你可以在 xx:=你定义的线程对象.execute上面加上一个没有用的语句,这样你就在button1click的线程里又创建了一个线程,而不是作为button1click的线程,你看看是不是这个原因,如不是,我继续关注,再看看
      

  2.   

    估计你的线程代码有问题,没有注意VCL的线程同步或者线程间共享资源的同步和互斥,把执行和创建代码贴一部分出来,大家看看。
      

  3.   

    我带了20层的()同意 yuzhantao(找不到女朋友,只好养条狗) 的看法
      

  4.   

    yuzhantao(找不到女朋友,只好养条狗):打个比方,那这样的话,程序执行到 xx:=你定义的线程对象.execute时,只创立一个线程,就是你所谓的分线程,但这样其实与没有创建线程一样。你可以在 xx:=你定义的线程对象.execute上面加上一个没有用的语句,这样你就在button1click的线程里又创建了一个线程,而不是作为button1click的线程不好意思,不懂!为什么在其前面加一句没用的语句,就创建了一个线程,不加却没有创建或跟没有创建一样呢?