|
싱크로나이즈가 막힌 것 같습니다.
아마 Dll이나 ActiveX 안에서 작동하고 있을 거란 생각이 드는 데 WakeMainThread 였나 하는 것 등으로 GUI 쓰레드에서 시간을 얻어와야 할거에요.
김명호 님이 쓰신 글 :
: 아래의 코드는 쓰레드 부분에 작성된 소스입니다.
: 우선 TCP 서버와 연결은 잘되며 데이터 전송도 잘됩니다.
: 그런데 TCP 서버에서 데이터를 전송하면 인디소켓에서 수신이 안되는 상황에서
: Disconnect를 수행하면 그 순간에 데이터가 들어옵니다..
: 몇일째 이래저래 고쳐보고 타이머를 써보아도 현상은 동일하네요..
: 이러한 현상 아시는분 답변부탁드립니다..
:
: ========================= 아 래 =================================
: void __fastcall ClntThd::UpdateListbox()
: {
: TByteDynArray Rx_Data;
: char rcv_data[128];
: int size;
:
: Form2->Caption = qq;
: size = Form2->IdTCPClient1->Socket->InputBuffer->Size;
: if(size <= 0) {
: return;
: }
:
: Form2->IdTCPClient1->Socket->ReadBytes(Rx_Data, size, false);
: for(int idx=0; idx<size; idx++)
: rcv_data[idx] = Rx_Data[idx];
:
: Form2->Edit1->Text = rcv_data;
: }
:
: __fastcall ClntThd::ClntThd(void)
: : TThread(false)
: {
: }
:
: //---------------------------------------------------------------------------
: void __fastcall ClntThd::Execute()
: {
: //---- Place thread code here ----
: qq = 0;
: while(!Terminated) {
: qq++;
: Synchronize(&UpdateListbox);
: }
: }
|