如何在创建线程后,等待该线程结束后再继续执行下面的代码!

解决方案 »

  1.   

    if YouThread.WaitFor then
    begin
      ......
    end;
      

  2.   

    var
      threadid1:DWord;
    begin
    CreateThread(nil,0,@TForm1.OutText1,nil,0,threadid1);
      if threadid1.Waitfor then
      begin
        showmessage('bb');
      end;
    end;
    为什么这样写在编译时出错,出错在第二行,
    record,object or class type required
      

  3.   

    为什么不用线程类
    YourThread:=TYourThread.Create(False);
    YourThread.OnTerminate:=isComplete;//指定线程结束的事件方法
    ....
    procedure TForm1.iscomplete(sender:Tobject);
    begin
      ..........
    end;
      

  4.   

    我要等待线程结束,如果使用linzhengqun(风) 的方法的话,没法等待线程结束再执行代码。为什么用线程,因为线程里的脚本是在等待某一事情的发生,如果不用线程的话,那要用循环来判断,那样程序的效率就不高了!
      

  5.   

    我想用信号量机制或许是个办法,在线程结束的时候发一个信号量,而线程下面的程序一直等待这个信号量,等到了再执行下面的程序。
    可能这是一个比较基础的方法,我现在在做C的程序的时候就是用的这种方法,可能在delphi中有更好的处理方法,关注。
      

  6.   

    你可以用timer,或者在循环里写application.ProcessMessages来解决
      

  7.   

    To:jinjazz(人雅的标记--落寞刺客) 
    可否讲得具体些!
      

  8.   

    看你的问题似乎可以这样:
    你new一个工程,放两个button,一个是start,一个是stop,一个edit,利用循环来检测edit内容,检测的同时你可以对edit进行编辑procedure TForm1.Button1Click(Sender: TObject);
    begin
     while true do
     begin
       application.ProcessMessages;
       if button2.Tag=99 then exit;
       if edit1.Text='' then
           edit1.Text:='aaa';
     end;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      button2.Tag:=99;
    end;
      

  9.   

    to:jinjazz(人雅的标记--落寞刺客) 
    你的方法是可以,但是CPU使用率100%啊,程序效率不高啊!
      

  10.   

    var
      threadid1:DWord;
    begin
    CreateThread(nil,0,@TForm1.OutText1,nil,0,threadid1);
      if threadid1.Waitfor then
      begin
        showmessage('bb');
      end;
    end;
    为什么这样写在编译时出错,出错在第二行,
    record,object or class type required
    ----threadid1 為線程id 非線程對象
    --你可新建議個線程對象
      將你的操作放在Execute中
    就可用
      YouThread.Waitfor
    等待  線程YouThread 結束
      

  11.   

    等待一下她的句柄,如果句柄有信号,说明她已经结束了
    用GetExitCodeThread也可以判断出她是否已经结束