起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 492|回复: 22

多线程执行不了**

[复制链接]
发表于 2007-7-6 15:14:24 | 显示全部楼层 |阅读模式
线程定义:
  TNotifyComplete =procedure(ByCreated: TForm) of Object;//通知事件
  TMyThread = Class(TThread)
  public
    IsComplete :TNotifyComplete;
  protected
    procedure Execute; override;
  end;

实现:
procedure TMyThread.Execute;
var frm :TXQSFXMCT;
begin
  frm := TXQSFXMCT.Create(nil);
  if Self.IsComplete <> nil then IsComplete(frm);
  Self.Terminate;
end;

//通知已经创建选取项目窗体
procedure TMZHJSFCT.IsComplete(frm :TForm);
begin
  Self.frm_SelectFYMX := TXQSFXMCT(frm);
end;

procedure TMZHJSFCT.BizFormCreate(Sender: TObject);
begin
mythread :=TMyThread.Create(False);
end;

线程执行方法不执行,不知何因?
回复

使用道具 举报

发表于 2007-7-6 18:34:10 | 显示全部楼层
我这里执行Execute方法了,只是IsComplete没有赋值,所以直接执行self.Terminate了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-9 09:05:49 | 显示全部楼层
真是奇怪
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-9 09:33:18 | 显示全部楼层
我试了一下,感觉这个多线程不是真的多线程,多线程过程一执行,主线程也不动了
回复 支持 反对

使用道具 举报

发表于 2007-7-9 10:38:58 | 显示全部楼层
我这里执行Execute方法了,只是IsComplete没有赋值,所以直接执行self.Terminate了
回复 支持 反对

使用道具 举报

发表于 2007-7-9 10:39:31 | 显示全部楼层
最初由 李涛 发布
[B]我试了一下,感觉这个多线程不是真的多线程,多线程过程一执行,主线程也不动了 [/B]



主线程也不动了 : 是指什么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-9 15:59:56 | 显示全部楼层
我在工作线程中执行一个长时间调用后,我的主线程就进入死机一样的状态,界面不能进行操作
回复 支持 反对

使用道具 举报

发表于 2007-7-9 16:11:29 | 显示全部楼层
你的工作线程执行代码是怎么写的?
让我看看吧!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-9 16:22:26 | 显示全部楼层
删除了,我就是在工作线程中创建了一个窗体,这个窗体创建时耗时较长,然后就像死机了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-9 16:25:10 | 显示全部楼层
差不多就是:
var frm :TfrmCustomer;
begin
   frm :=TfrmCustomer.Create(Context);//Context是我创建线程时输入的公共域
  self.Terminate;
end;
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-12 15:49 , Processed in 0.036395 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表