下面是线程调用的函数,如果只调用一次的话可以用,但是放到循环中就不能用了,机器都快死机了
能用的函数:
procedure TfrmMain.Button2Click(Sender: TObject);
var
TnewThread: TMyThread;
begin
//for I := 0 to 20 do
//Begin
TnewThread := TMyThread.Create(false);
//End;
end不能用的函数:
procedure TfrmMain.Button1Click(Sender: TObject);
var
TnewThread: TMyThread;
begin
for I := 0 to 20 do
Begin
TnewThread := TMyThread.Create(false);
End;
end;帮忙呀,谢谢了:)
感激中
能用的函数:
procedure TfrmMain.Button2Click(Sender: TObject);
var
TnewThread: TMyThread;
begin
//for I := 0 to 20 do
//Begin
TnewThread := TMyThread.Create(false);
//End;
end不能用的函数:
procedure TfrmMain.Button1Click(Sender: TObject);
var
TnewThread: TMyThread;
begin
for I := 0 to 20 do
Begin
TnewThread := TMyThread.Create(false);
End;
end;帮忙呀,谢谢了:)
感激中
解决方案 »
- 从C#转到delphi的困惑
- 一个简单的dbgrid的列的可编辑与adoquery的问题
- 定位问题(集)
- 为什么我读取十六进制数0DE3,0DE3是一个数据的存处地址,返回一个负值(-7411),为什么会是这样,vc++语言有一个叫&H0DE3&这个就可以返回正数
- 问题:一个关于DELPHI 调用SQL2000存储过程的问题:
- 在98系统下面INI文件超过64M怎么处理啊?
- 如何给adostoreprocedure的参数类型为timestamp的参数赋值?
- 关于HELP文档!(请帮忙)
- Delphi2010 调用window的cmd命令行,得到返回信息全为乱码。怎么处理
- 怎样把记录读到filelistbox里
- 好奇怪的问题
- ListView 里的图标为什么那么小。
前者就
for I := 0 to 20 do
Begin
TnewThread := TMyThread.Create(false);
Sleep(20);
End;
后者就使用临界区吧
还有就是在线程执行的时候应加sleep()。
procedure Twordopenthread.Execute;
begin
sleep(1000);//大小自己设置。必须否则线程抢占太多的系统资源,会死机的。
....
end;