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

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

2013-01-01 
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()是一样的吧?

ClientSocket->Close() 这是关闭一个socket
this->Terminate() 这是关闭一个线程 
两个完全不同的概念呢
[解决办法]
多个线程访问同一个对象,是通过临界区的吗?还是直接访问?直接访问会造成冲突的,或者使用sync函数,提升到主线程执行

热点排行