帮我纠正一个概念问题————————————————全部家当 88 分(88分)

  • 主题发起人 主题发起人 coolingxyz
  • 开始时间 开始时间
C

coolingxyz

Unregistered / Unconfirmed
GUEST, unregistred user!
我的主窗体上有一个udp控件,接收到数据后我想开启一个线程来处理,udp控件
继续监听。
现在问题是我的线程处理数据的时间比较长(可能我对线程的理解不是很正确),
当udp收到一个数据时创建一个线程a := TMyThread.create(self);来处理,这时a还没
有处理完,我能不能再a := TMyThread.create(self);来处理这个数据呢?
如果不可以,那我应该怎么写才能在受到一个数据后开启一个现成来处理呢?请大
家帮忙,任务比较急,手头又没有资料。
 
with TMyThread.Create(Self)do
完成之后会自动释放的。
 
那如果我要传递参数给线程呢?
能传指针吗?我试了一下,编译通不过。
应该怎么写。
我重载了现成的create函数。
 
传指针应该是可以
但是最好是有类型的
 
用一个数组:
var
ThreadArray: array [0..9] of TMyThread;
begin
...
ThreadArray[0] := TMyThread.create(self);
end;
传指针当然可以,你的主线程和创建的新线程在同一进程空间。
 
最好作一个线程池,简单的管理一下。
若是线程a还没有执行完,当然不能再创建。
可以用线程数组的方法,将每个线程元素的状态维护好。
当然是可以传参数进去的。例如
constructor create(p1:integer;p2:string;p3:Pchar);
 
多人接受答案了。
 
后退
顶部