|
결과적으로 두개가 필요한게 맞습니다.
님이 올리신 예제 보면..
거기에 님이 필요로 하는 내용은 다 있는데요..
: : : List = IdTCPServer1->Contexts->LockList() ; ==> list 가져오고..
: : :
: : : try
: : : {
: : : for(Loop =0;Loop<List->Count;Loop++) ==> count는 여기 있고요..
똑똑 님이 쓰신 글 :
: 이해가 잘되지않는데 Count멤버변수를 사용할려면 어떻게 사용해야되는건가요?
: TList, TThreadList 두개가 필요한건 아니죠?
: 이제막 프로그래밍시작한 초보라 양해부탁드립니다
:
: Intotheblue 님이 쓰신 글 :
: : 반환해 주는 TList* 를 가지고 이용하면 됩니다.
: :
: : ThreadList 는 Thread 사용시 동기화 처리때문에..
: : lock 과 unlock 을 제공해 주는 역활을 하죠.
: : 나머지는 List 에 필요한것은. 반환되는 TList 로 쓰시면 됩니다.
: :
: : 올려놓으신 예제를 보면 알수 있을겁니다.
: :
: : 똑똑 님이 쓰신 글 :
: : : void __fastcall TForm1::SandToAll(AnsiString Text)
: : : {
: : : TList *List;
: : : TIdContext *AContext;
: : : int Loop;
: : : List = IdTCPServer1->Contexts->LockList() ;
: : :
: : : try
: : : {
: : : for(Loop =0;Loop<List->Count;Loop++)
: : : {
: : : AContext = (TIdContext *) List->Items[Loop];
: : : AContext->Connection->IOHandler->WriteLn(Text);
: : : }
: : : }
: : : __finally
: : : {
: : : IdTCPServer1->Contexts->UnlockList();
: : : }
: : : }
: : : //---------------------------------------------------------------------------
: : : void __fastcall TForm1::IdTCPServer1Execute(TIdContext *AContext)
: : : {
: : :
: : : AnsiString Temp ;
: : : Temp = AContext->Connection->IOHandler->ReadLn();
: : : SandToAll(Temp);
: : : }
: : :
: : : TList는 쓰레드에서는 TThreadList로 대체해서 사용해야된다고 들었는데
: : :
: : : TList를 TThreadList로 마냥 대체할려고하니깐 오류가 발생하네요
: : : TThreadList에서는 Count멤버변수도 없고
: : : IdTCPServer1->Contexts->LockList() 는 TList* 를 리턴해주는데 어떻게 해야될지 감이 안잡힙니다
|