首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

TServerSocket 报错Access violation at address 004864A6 in module 'NetServer.exe'.解

2012-02-17 
TServerSocket 报错Access violation at address 004864A6 in module NetServer.exe.实在是找不到什么原

TServerSocket 报错Access violation at address 004864A6 in module 'NetServer.exe'.
实在是找不到什么原因报错。
这是获得线程的代码,一般超过20个线程 不知道什么原因就报错了。
void __fastcall TfrmNetServer::ssktHCYGetThread(TObject *Sender,
  TServerClientWinSocket *ClientSocket,
  TServerClientThread *&SocketThread)
{
try
{
  AnsiString str = ClientSocket->RemoteAddress+":"+IntToStr(ClientSocket->LocalPort);
  ChechIPExists(str,tvHCY);
  if(hcyNode)
  tvHCY->Items->AddChild(hcyNode,str);
  else
  {
  WrriteLog("晃车仪首节点不存在");
  return;
  }
  tvHCY->Items->Item[0]->Text = IntToStr(tvHCY->Items->Item[0]->Text.ToInt()+1);
  SrvThread *srvt = new SrvThread(true,ClientSocket);
  ConnThread ct;
  ct.paddr = srvt;
  ct.InFor = str;
  ConTrd.push_back(ct);
  srvt->Resume();
  SocketThread = srvt;
}
catch(...)
{
  WrriteLog("软件发生异常ssktHCYGetThread");
}
}


[解决办法]
看不出来,调试一下看看
[解决办法]
你不是写日子了吗?
是哪里出错的?
[解决办法]

探讨

结束线程用 ClientSocket->Close()和this->Terminate()是一样的吧?

[解决办法]
多个线程访问同一个对象,是通过临界区的吗?还是直接访问?直接访问会造成冲突的,或者使用sync函数,提升到主线程执行

热点排行