我的程序没有使用窗体(没有加Forms单元),而我又想使用线程,怎么办?!? ( 积分: 100 )

  • 主题发起人 主题发起人 zheng
  • 开始时间 开始时间
Z

zheng

Unregistered / Unconfirmed
GUEST, unregistred user!
以前使用过Delphi的线程TThread,但是以前都有使用TForm的,现在没有Forms后,线程只执行一下就自动退出了,不知道怎样解决。
 
以前使用过Delphi的线程TThread,但是以前都有使用TForm的,现在没有Forms后,线程只执行一下就自动退出了,不知道怎样解决。
 
晕,delphi当然可以执行没有主窗体的程序了,一个服务程序是不需要窗体的。
 
一样的,肯定是线程写的不对
 
有没有Form和线程使用两者没有什么因果关系吧
楼主仔细看看代码吧
 
楼上几位都说得不错,最好跟踪一下线程执行
 
想象一下,线程就像一个小程序,执行一次就停下来很自然的,要它不停下来,就要把它写成封闭的循环程序,并且在循环里面不断判断suspended,这是叫停标志,让主线程来叫停的,这跟窗口无关。
 
比如代码:
工程文件:
program PServer;
{$R *.res}
uses
SysUtils,
Unit1 in 'Unit1.pas';
begin
Main;
end.

单元文件:
unit unit1;
interface
uses
SysUtils, Classes;
type
TMyThread = class(TThread)
public
procedure Execute;
override;
end;

implementation
procedure TMyhread.Execute;
begin
while not Terminateddo
begin
.......
end;
end;

procedure Main;
begin
TMyhread.Create(False);
end;
如果以上的代码写在有Forms的应用程序中就可以正确循环执行下去。而在这里就不行,执行一下马上自动退出。
 
做个dll包个线程,然后去调不就结了
 
主进程main执行了一次就over了,你的小线程当然也就over了,而form是在等待事件驱动~(相当于无限循环的程序),晕~~~~
 
有分么,我从来就没得过~ 给我吧!
 
看线程没几天,不知道怎么说,也给我点分好吧!
 
陪jeanler一起为你晕
主进程main执行了一次就over了,你的小线程当然也就over了,而form是在等待事件驱动~(相当于无限循环的程序),晕~~~~
 
这么多晕的就是没有一个解决问题的
工程文件:
program PServer;
{$APPTYPE CONSOLE}
uses
Unit1 in 'Unit1.pas';
begin
Main();
end.

单元文件:
unit unit1;
interface
uses
Classes;
type
TMyThread = class(TThread)
public
procedure Execute;
override;
end;

procedure Main();
implementation
var
ThreadOver: Boolean;
procedure Main();
begin
TMyThread.Create(False);
while not ThreadOverdo
;
end;

{ TMyThread }
procedure TMyThread.Execute;
var
I: Integer;
begin
while not Terminateddo
begin
for I := 0 to 1000do
begin
Writeln(I);
end;
end;
ThreadOver := True;
end;

end.
 
这么久了,看到这个问题忍不住回答以下,其实要是能够控制主线程不Over,你的小线程就不Over,然后这个问题就Over了。
 
楼主,这个问题似乎不需要怎么解决吧?
你的整个程序都执行完了.当然一下子就自动退出了.
这个跟有没有Tform没什么关系.
还是看你的线程Execute过程里在做些什么吧?
 
好,帮顶


--------签名档---------------------------

比肩国内顶尖源码下载站点 -> 源码我爱你

http://www.source520.com
http://www.source520.net
80G源码电子书免费免注册下载,大量精辟技术文档库随时更新
******************************************************************
附:为了站点持续发展,现有本站近年来收藏的大量大型商业源码低价出售,
详情请进入以下链接查看:
http://www.source520.com/building_delphi.htm

浏览商业代码请从如下URL进入查看实物:
1.商业源码库1: ftp://source520see3:browse@61.152.199.245/
2.商业源码库2: ftp://source520see2:browse@61.152.199.245/
 
thx1180
兄台的固然解决问题
但是无法结束的吧?
 
WaitForSingleObject
 
后退
顶部