소켓 통신으로 데이타가 초당 2-3건씩 들어옵니다
소스가
type
TRecvData = class
Data1 : String;
Data2 : String;
Data3 : String;
Data4 : String;
end;
var DataList : TList;
procedure TFormMain.FormShow(Sender: TObject);
begin
DataList := TList.Create;
end;
procedure TFormMain.DataReceiveExecute(AThread: TIdPeerThread);
var vMsg : TRecvData;
begin
If DataList.Count < 0 Then Exit
Else Begin
vMsg := TRecvData.Create;
vMsg.Data1 := Data1;
vMsg.Data2 := Data2;
vMsg.Data3 := Data3;
vMsg.Data4 := Data4;
DataList.Insert(0, vMsg);
End;
procedure TSJCDBThread.Execute;
begin
//inherited;
Try
While Not Terminated Do Begin
Synchronize(FormMain.DBProcess);
Sleep(100);
If Terminated Then Exit;
End;
Finally
Terminate;
End;
end;
procedure TFormMain.DBProcess; //수신된 데이타를 DB에 Insert 한다
Var vIdx : Integer;
vMsg : TRecvData;
begin
If DataList.Count < 0 Then Exit;
For vIdx := DataList.Count - 1 Downto 0 Do Begin
vMsg := DataList.Items[vIdx];
////////////////////// DataBase Insert //////////////////////////
////////////////////////////////////////////////////////////////////////////////
DataList.Delete(vIdx);
vMsg.Free;
End; //for vIdx ~
end;
소스가 위와 같이 진행 됩니다
에러가 발생하는데 어디부분이 잘못됐는지 좀 고수님들 봐주세요..
소켓에서 초당 3건 이상 넘어올때 에러가 발생하는거 같습니다.