我在一个定时器里开一个线程,不停检查listbox上是否有数据,
如果有的话就交给线程去处理:
procedure TForm1.Timer1Timer(Sender: TObject);
var
t1:Thread;
begin
if listbox1.items.Count>0 then
begin
t1:=Thread.Create(Threadstart(MyThreadProc));
t1.Start;//线程开始
end;
procedure MyThreadProc();
begin
//线程处理数据
end;现在有个疑问:定时器里一直Thread.Create会不会造成资源浪费?
另外每次create那不是会建立n个线程吗?那不是没达到我的目的,
我是要检查到有数据就交给一个线程去处理,该线程就是专门来
处理数据用的
Timer.Enabled:=False;
//执行你检查的代码
Timer.Enabled:=True;
如果你选择了某个选项
忘了,,,呵呵,楼下的来说吧
楼上说得对,没有必要用线程,有timer就可以了
1、timer触发一次只create一次
2、每次也只创建一个线程
你的方法没有错啊,线程执行完毕之后会自动terminate的。
不过最好你做个判断,在上个线程执行完前不要执行下一个。否则你就要对线程进行同步处理