2009-03-21 3 views

답변

15

짧은 대답은 아니오입니다. ClientDataSet은 스레드로부터 안전하지 않습니다. 보다 복잡한 대답은 사용 방법에 달려 있다는 것입니다. 보유하고있는 ClientDataSet의 클론이 얼마나 많든 상관없이 데이터를 읽는 동안 여러 스레드에서 안전하게 사용할 수 있습니다. 다른 범위, 현재 레코드, 필터 등을 설정하는 경우에도 마찬가지입니다.

그리고 이것에 대해 묻지는 않았지만 복제 된 ClientDataSet을 문제없이 복제 한 원래의 ClientDataSet조차도 해제 할 수 있습니다.

반면에 복제본에 레코드를 게시하거나 데이터를 다시로드해야하는 경우 동기화 개체를 사용해야합니다. 변경 사항이 거의 발생하지 않으면 TMultiReadExclusiveWriteSynchronizer 클래스는이 용도로 사용하는 것이 좋습니다.

4

클론 프로세스는 TCriticalSection으로 처리해야하지만 각 TClientDataSet은 자체 스레드에서 정상적으로 처리되어야합니다.

11

단어 : 번호 :

모든 VCL은 "스레드 안전하지 않은"것으로 간주되어야합니다. TThread의 시각적 구성 요소에 대한 호출은 Synchronize 이벤트에서 이루어져야합니다.

모든 VCL/RTL 클래스는 TThread 내에서 작성되고 완전히 파괴되어야합니다.

관련 문제