Q&A

  • TXMLDocument를 스레드에서 생성해서 사용하려 할때.

인디 소켓으로 전송받은 XML을 스레드를 사용해서 값들을 읽어오려
합니다. 그런데 에러가 납니다.
    TXMLDocument.Active := True;
로 해 준 다음에 작업을 하려하니 에러가 납니다.

스레드 내에서 TXMLDocument를 사용하지 못할리는 없을테구요...

아래는 제가 작성한 스레드 일부입니다.


constructor TCmdAnalysisThread.Create(var StringStream: TStringStream);
begin
  inherited Create(True);
  FStringStream := StringStream;
  FXMLDocument := TXMLDocument.Create(nil);
  FreeOnTerminate := True;
  Resume;
end;


procedure TCmdAnalysisThread.Execute;
begin
  Coinitialize(nil);
  try
    FXMLDocument.XML.LoadFromStream(FStringStream);
    FXMLDocument.Active := True;

    FXMLNode := FXMLDocument.DocumentElement.ChildNodes.FindNode('service'); <-- 요기서 에러가...
  finally
    FXMLDocument.Active := False;
  end;
  Couninitialize;
end;
0  COMMENTS