DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: 19137911446
今日帖子: 18
在线用户: 14
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 cc_cn (cc_cn) ★☆☆☆☆ -
盒子活跃会员
2004/2/19 9:34:52
标题:
怎样实现线程执行完毕后自动挂起(suspend)而不是销毁(free) 浏览:1734
加入我的收藏
楼主: 下面是具体的代码,第一次按button可以showmessage,在按就没有用了,不知道是什么原因,代码很简单,请各位大哥不要嫌麻烦,一定看一看,谢了~~~~
procedure TForm1.Button1Click(Sender: TObject);
begin
  a1.Resume;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  a1:=a.Create(true);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  a1.Free;
end;
///下面是线程中的代码
procedure a.Execute;
var
  i:byte;
begin
  FreeOnTerminate:=false;
  for i:=1 to 200 do
  begin
    form1.Edit1.Text:=inttostr(i);
  end;
  showmessage('yes');
  suspend;
end;
----------------------------------------------
-
作者:
男 cc_cn (cc_cn) ★☆☆☆☆ -
盒子活跃会员
2004/2/19 9:37:38
1楼: 顶一下先~~
----------------------------------------------
-
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2004/2/19 11:00:09
2楼: 大哥偶出现这个错误 是怎么回事啊?
此帖子包含附件:
JPEG 图像
大小:53.3K
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 cc_cn (cc_cn) ★☆☆☆☆ -
盒子活跃会员
2004/2/19 11:19:09
3楼: 我一开始也出现这个错误,后来什么也没改,又运行了一下,就好了
你再运行一次看看
还有千万不要叫我大哥,应该是我叫你才对啊~~~~
----------------------------------------------
-
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2004/2/19 11:19:57
4楼: ???大哥 不行呀!
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 cc_cn (cc_cn) ★☆☆☆☆ -
盒子活跃会员
2004/2/19 11:26:30
5楼: form1中的代码:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,unit2;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    a1:a;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  a1.Resume;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  a1:=a.Create(true);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  a1.Free;
end;

end.
线程中的代码:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  a = class(TThread)
  private
    { Private declarations }
  protected
    procedure Execute; override;
  end;

implementation
uses unit1;
{ a }

procedure a.Execute;
var
  i:byte;
begin
  FreeOnTerminate:=false;
  for i:=1 to 200 do
  begin
    form1.Edit1.Text:=inttostr(i);
  end;
  showmessage('yes');
  suspend;
end;

end.
再不行我也没办法了,我这边好好的~~~~
----------------------------------------------
-
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2004/2/19 11:33:18
5楼: 这样吧
type
  tmythread=class(TThread)
    private
    public
     procedure Execute;override;
     constructor create(ad:boolean);
     destructor destroy;
  end ;
var
  Form1: TForm1;
  a1:tmythread;
implementation
 
{$R *.dfm}
constructor tmythread.create(ad:boolean);
begin
 inherited create(ad);
end;
 
destructor tmythread.destroy;
begin
 inherited;
end;
procedure tmythread.Execute;
var
  i:byte;
begin
  for i:=1 to 200 do
  begin
    form1.Edit1.Text:=inttostr(i);
    form1.Edit1.Update ;
  end;
end;
 
procedure TForm1.myter(Sender: TObject);
begin
 showmessage('yes');
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
a1:=tmythread.Create(true);
a1.FreeOnTerminate :=false;
a1.OnTerminate :=myter;
a1.Resume;
 
end;
 
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
a1.Free ;
end;
 
end.


----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 zxdcj (月下舞者) ★☆☆☆☆ -
盒子活跃会员
2004/2/21 20:59:42
6楼: bios兄,请问在上例中你将myter放在OnTerminate中是从哪方面考虑的呢?
----------------------------------------------
-
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2004/2/22 7:53:13
7楼: 从他的名字上看的,老外这种事件赋于机制果然很强大!
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 zxdcj (月下舞者) ★☆☆☆☆ -
盒子活跃会员
2004/3/3 10:53:25
9楼: bjdribllec兄,
微薄之力,不必客气,大家要一起使劲才能创造优质团队!
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行1734.375毫秒 RSS