怎样能跟踪线程

d4fan 2000-05-18 09:11:00
如果编写了一个线程类,比如说TMyThread,
在MyThread := TMyThread.Create,之后,
我怎样才能知道我的线程是否执行了,
或我怎样才能跟踪到线程内部.
...全文
200 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
kxy 2000-05-20
  • 打赏
  • 举报
回复
1) Create中要inherited Create(False);
2) Execute中不要Inherited;
3)如果要对Form1操作要使用Synchronize.
4)你没有释放你创建的Thread对象,
。。。。
你最好先看看delphi自己带的TThread的Demo程序:)
在Delphi5\Demos\Threads下。
d4fan 2000-05-20
  • 打赏
  • 举报
回复
我要跟踪线程,主要就是因为这个程序运行不成功,大家帮忙啦.
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,不知为什么,请各位帮忙查查错。
kxy 2000-05-18
  • 打赏
  • 举报
回复
在线程的Execute中设置断点。
d5中据说有更好的线程跟踪机制,我没有用过。

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧