线程使用问题!!

gypb 2000-03-20 07:19:00
各位大虾:
我在编写一个数据库程序时发现在启动打开数据库时时间很长,而其间
弹出的系统登陆窗口时有很长时间等待用户输入密码,我想在登陆窗口产生以前用线程去CREATE DATAMODULE,在主窗口ACTIVE时加入检查线程是否已成功的标志辩别程序,这样可大大减少程序启动时间。可主窗口出现后,当打开DATAMODULE时,系统即出错!,不知何因,我的程序样版如下;
PROGRAM TEST;
...

BEGIN
APPLICATION.CREATEFORM(FORM1,TFROM1);
CREATEDATAMODULETHREAD;//执行启动创建DATAMODULE的线程;
APPLICATION.RUN;
END;
请高手指点
...全文
220 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
supershan 2000-03-23
  • 打赏
  • 举报
回复
我觉得没有必要有线程,可自动创建Datamoudle,我认为问题不在这儿
sunsetyang 2000-03-22
  • 打赏
  • 举报
回复
Email Address:chyang@163.net
你将鼠标移动到账号那儿,在状态栏会自动显示email的。
torent 2000-03-22
  • 打赏
  • 举报
回复
Delphi的VCL和BDE都不是线程安全的,在线程中操作VCL时要将主线程挂起,在线程中操作
BDE时,各线程中的Data Control(TTable,TQuery等)的SessionNae都要与不同的Session
才能保证线程安全。你的代码是否注意到以上两个问题呢?
cxjcsdn 2000-03-22
  • 打赏
  • 举报
回复
我可将源码EMAIL给你,请留地址。
cxjcsdn 2000-03-22
  • 打赏
  • 举报
回复
建议你将登录窗体放在另一线程,DATAMOUDLE放在主线程.
gypb 2000-03-21
  • 打赏
  • 举报
回复
原来登陆是要通过数据库验证的,因为程序启动时打开数据库很慢,我就改成密码加密放在REGISTRY中,我的思路是:当用户输入密码和用户名时,系统在处于等待状态,可以在登陆窗口创建之前用一个线程创建DATAMOUDLE,当用户登陆成功,主窗口显示时在对创建DATAMODULE的线程进行辨别是否已结束。可当创建DATAMODULE的线程运行结束后,打开数据库时却出错。
由于客户对程序启动时间有要求,请高手门帮帮忙!。
另:我的数据库是用DAO连接ACCESS数据库。
gypb 2000-03-21
  • 打赏
  • 举报
回复
我所指的登陆窗口是指我自己加入的PASSWORDDLG,另DATAMOUDLE一从AUTOCREATE-FORMS中删除。
另CREATEDATAMOUDLETHREAD中线程创建DATAMOUDLE的代码为
APPLICATION.CREATEFORM(DATAMOUDLE1,TDATAMOUDLE);
sadpacific 2000-03-21
  • 打赏
  • 举报
回复
同意sunsetyang.
sunsetyang 2000-03-21
  • 打赏
  • 举报
回复
dengdeng那样有什么作用?让本来已经很慢的程序跑得更慢?
你的打开数据库操作是什么原因造成的打开缓慢?你让我们看一下你的线程创建的过程,完整的贴出你的线程的模块。打开数据库时报的是什么类型的错误?
dengdeng 2000-03-21
  • 打赏
  • 举报
回复
可以不用线程。在程序启动时加入一个Splash窗口,就象DELPHI启动时的显示一样。
这样用户就不觉得慢了。

program PCapture;

uses
DM in 'DM.pas' {DM1: TDataModule},
Splash in 'Splash.pas' {FormSplash},

{$R *.RES}
begin
Application.Initialize;
FormSplash := TFormSplash.Create(nil);
FormSplash.Show;
FormSplash.UpDate;
Application.CreateForm(TDM1, DM1);
FormSplash.Hide;
FormSplash.Free;
Application.Run;

faststep 2000-03-20
  • 打赏
  • 举报
回复
1.数据库登录时的用户输入窗口是可以去掉的:
用TDatabase来控制与数据库的连接,将其属性LoginPrompt设为False即可。
2.你在线程中创建DataMudule时,是否将DataMudule从工程Options的AutoCreate-forms的选项中去掉了?
kxy 2000-03-20
  • 打赏
  • 举报
回复
代码贴的太少

5,386

社区成员

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

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