在线程的Execute中设置断点。
d5中据说有更好的线程跟踪机制,我没有用过。

解决方案 »

  1.   

    我要跟踪线程,主要就是因为这个程序运行不成功,大家帮忙啦.
    unit ThreadUnit;                                                                
                                                                                    
    interface                                                                       
                                                                                    
    uses                                                                            
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,     
      StdCtrls;                                                                     
                                                                                    
    type                                                                            
      TForm1 = class(TForm)                                                         
        Edit1: TEdit;                                                               
        Edit2: TEdit;                                                               
        Button1: TButton;                                                           
        procedure Button1Click(Sender: TObject);                                    
        procedure FormClose(Sender: TObject; var Action: TCloseAction);             
      private                                                                       
        { Private declarations }                                                    
      public                                                                        
        { Public declarations }                                                     
      end;                                                                          
      TMyThread = class(TThread)                                                    
      private                                                                       
        Number1Edit, Number2Edit: TEdit;                                            
        Number1, Number2: Integer;                                                  
        Procedure ShowNumber;                                                       
      protected                                                                     
        procedure Execute; override;                                                
      public                                                                        
        Constructor Create(Edit1, Edit2: TEdit);                                    
      End;                                                                          
                                                                                    
    var                                                                             
      Form1: TForm1;                                                                
                                                                                    
    implementation                                                                  
                                                                                    
                                                                                    
    {$R *.DFM}                                                                      
                                                                                    
    { TThread }                                                                     
                                                                                    
    constructor TMyThread.Create(Edit1, Edit2: TEdit);                              
    begin                                                                           
      Number1Edit := Edit1;                                                         
      Number2Edit := Edit2;                                                         
      Number1 := 0;                                                                 
      Number2 := 0;                                                                 
    //  inherited Create(False);                                                    
      Resume;                                                                       
    end;                                                                            
                                                                                    
    procedure TMyThread.Execute;                                                    
    begin                                                                           
      inherited;                                                                    
      Form1.Canvas.TextOut(100, 100, 'Why');                                        
      ShowNumber;                                                                   
    end;                                                                            
                                                                                    
    procedure TMyThread.ShowNumber;                                                 
    var                                                                             
      i: Integer;                                                                   
    begin                                                                           
      For i := 1 to 100000 do                                                       
      Begin                                                                         
        Number1Edit.Text := IntToStr(Number1);                                      
        Number2Edit.Text := IntToStr(Number2);                                      
        Form1.Edit1.Text := IntToStr(Number1);                                      
        Form1.Edit2.Text := IntToStr(Number2);                                      
        Inc(Number1);                                                               
        Inc(Number2);                                                               
        Form1.Canvas.TextOut(10, 10, IntToStr(Number1 + Number2));                  
      End;                                                                          
    end;                                                                            
                                                                                    
    procedure TForm1.Button1Click(Sender: TObject);                                 
    begin                                                                           
      TMyThread.Create(Edit1, Edit2);                                               
    end;                                                                      end.                                                                      这个程序不能正常运行,总是执行不到                                              
    Execute,不知为什么,请各位帮忙查查错。                                         
      

  2.   

    1) Create中要inherited Create(False);
    2) Execute中不要Inherited;
    3)如果要对Form1操作要使用Synchronize.
    4)你没有释放你创建的Thread对象,

    你最好先看看delphi自己带的TThread的Demo程序:)
    在Delphi5\Demos\Threads下。