我想设计一个线程MYThread,在一个循环中调用!Para_ClientNo是线程的参数,根据这个参数的不同进行不同的操作!For i ;= 1 to 100 do
Begin
MYThread.Create(Para_ClientNo);
End;为什么我做的线程在运行了一段时间后总是出现 ‘存储空间不足,线程无法创建’的错误!是因为线程没有没有在使用完及时释放掉的原因么?应该怎样在使用后做到及时释放?谢谢大家的帮助!
Begin
MYThread.Create(Para_ClientNo);
End;为什么我做的线程在运行了一段时间后总是出现 ‘存储空间不足,线程无法创建’的错误!是因为线程没有没有在使用完及时释放掉的原因么?应该怎样在使用后做到及时释放?谢谢大家的帮助!
线程太多了,资源耗尽。那样做为什么 ?以下代码供参考 ,调试通过
--------------------------------------------------------------------
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;type
TForm1 = class(TForm)
Edit1: TEdit;
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;type
TMyThread = class(TThread)
private protected
procedure Execute; override;
public constructor Create; virtual;
end;
var
Form1 : TForm1;
HSem : THandle = 0 ;
implementation{$R *.dfm}procedure TMyThread.Execute;
var
WaitReturn : DWord ;
begin
WaitReturn := WaitForSingleObject(HSem,INFINITE) ;
Form1.Edit1.Text := DateTimeToStr(Now);
ReleaseSemaphore(HSem, 1, Nil)
end;constructor TMyThread.Create;
begin
inherited Create(False);
FreeOnTerminate := True;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
i: Integer;
begin
for i := 0 to 10 do //改小 ,100 时10多分钟后内存不足
begin
TMyThread.Create;
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
HSem := CreateSemaphore(Nil,10,10,Nil) ;
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
CloseHandle(HSem) ;
end;end.