상당히 복잡한 (다중 문서) XML 구조 편집 &을 읽는 것을 기반으로하는 GUI 응용 프로그램을 작성하고 있습니다. GUI 자체는 주로 데이터 바인딩을 기반으로하므로 대부분 XML과의 상호 작용은 LINQ to XML을 사용하는 객체 기반 모델을 통해 UI 스레드에서 수행되지만 일부 작업 (예 : 검색 및 로드)는 백그라운드 스레드에서 수행해야하므로 스레드로부터 안전한 방식으로이 XML에 액세스해야합니다. 나를 XML의 모든 편집이 스레드 안전 (예 : 글로벌 잠금 또는 UI 스레드에서 모든 편집을 수행하여) 있는지 확인하기 쉬운만큼XObject에 대한 잠금/스레드 안전 액세스
그것의, 그러나 나는 알 그 XObject 상태
에 대한 설명서이 형식의 모든 공용 static 멤버는 스레드로부터 안전합니다. 모든 인스턴스 멤버는 스레드로부터 안전하지 않을 수 있습니다. 내 응용 프로그램에서 사용 모든 액세스 에 대한
XObject
인스턴스를 동기화해야 함을 의미
. 불행하게도 내 개체 모델이 작동하는 방식 때문에 내 모델의 개체 중 최대 하나의 인스턴스가 XObject
에 액세스하는 것을 보장하기가 어렵습니다. 즉, 개인 개체를 잠그면 스레드 안전성을 보장 할 수 없습니다. (일반적으로 교착 상태를 방지하는 최상의 방법).
이 시나리오에서는 스레드 안전을 위해 XObject
에서 직접 잠금을 사용할 수 있습니까? 아니면 다른 방법이 있습니까?
나는 주석을 사용하는 것을 생각했지만, 주석에 액세스하는 데 사용되는 메소드는 스레드 안전성이 없으므로 주석에 대한 액세스를 동기화하는 데 다른 외부 메커니즘을 사용해야 할 수도 있습니다. – Justin