我的udp线程那里出错了啊???/(100分)

  • 主题发起人 主题发起人 十七郎
  • 开始时间 开始时间

十七郎

Unregistered / Unconfirmed
GUEST, unregistred user!
由于我把源码贴出来一部分.所以篇幅较长,另外为了便于把问题说清楚,我也把出错的图给抓了下来,请大家帮我看看
具体url : http://www.0838.com.cn/mydoc/delphierror.html

请路过的朋友帮忙看看

我的联系方式: 24578574

还有个问题
threadlist.add(参数)
??????????????????
这里的参数一般是什么.我这里遇到一个参数是以个数据结构的{record},又该如何解释?

TempEmployees:=TThreadList.Create;
with Employees.LockList do
try
for iLoop:=0 to Count-1 do
begin
TempEmployees.Add(Items[iLoop]);
end;
finally
Employees.UnlockList;
end;
=====================
1 Employees已经是以个线程了.怎么还在线程中来加线程?
 
大家帮我看看啊
 
在udpread事件里面创建线程干吗?
直接读数据就可以了啊:
给段代码给你:
procedure TDataModule1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var s: String;
begin
SetLength(s, AData.Size);
adata.ReadBuffer(s[1],adata.Size);

showmessage('<'+ ABinding.PeerIP+'>'+ s);

end;
 
我上面是服务端代码,如果不用线程来专门处理接受到的数据,把所有处理都由主线程来完成的话,数据量大了,服务端肯定要发生假死.或者down掉.而且效率很低...

我采用的模式是: 在主线程中接受到数据以后. 交给另一个线程去处理,主线程继续接受.互不影响啊.这样不是很好吗?
 
TThreadList 并不是 TThread
它只是一个线程安全的 TList
 
估计由于你在ServerThread线程中使用 ADO 去做数据访问,ADO是COM对象,
而你的ADO相关组件,应该不是在 ServerThread 中创建的,
建议你:
1、要么使用 Synchronize 来包含你的业务处理;
2、要么在你的 ServerThread 中动态创建所有 相关 ADO 组件。
 
首先,谢谢你们.估计应该不是我的ado问题.
 
后退
顶部