.NET 라이브러리에서 사용할 수있는 특수 데이터 구조를 작성 중이며이 데이터 구조의 기능 중 하나는 하나의 스레드 만 데이터를 쓰고 하나의 스레드 만 읽으면 스레드 안전성이 있다는 것입니다. 그것으로부터의 데이터 (독자 쓰레드와 라이터 쓰레드는 다를 수있다)..NET에서 크로스 스레드 액세스를 검색하는 방법 (스레드 유사성 적용)?
질문은 모든 읽기 작업이 동일한 스레드에 의해 실행되도록하는 방법은 무엇입니까?
내 솔루션은 System.Threading.Thread.ManagedThreadID를 캡처하여 첫 번째 읽기시 개인 멤버에 저장합니다. 그런 다음 후속 읽기에서 ManagedThreadID를 저장된 것과 비교하여 검사하고 다른 경우 예외를 throw합니다.
그걸로 충분합니까, 아니면 이렇게하기위한 다른 신뢰할 수있는 메커니즘이 있습니다.
참고 :이 라이브러리는 Windows.Forms 컨텍스트없이 사용할 수 요구 사항이 있습니다 ..
감사합니다. 그냥 궁금 해서요, 어떤 이유가 보입니까 @ sixlettervariables의 답이 좋을까요/나빠질까요? –
@Miky D, 나는 책임이 섞여 있기 때문에 그것이 더 나쁘다는 유일한 이유가있다. 잘못된 크로스 스레드 액세스를 확인하기 위해 별도의 클래스를 사용하면 일관성있는 재사용 환경을 제공합니다. 그것은 매우 적은 양의 코드이지만 오류 메시지는 정말 망칠 수 있습니다. 따라서 IMHO는 그리 큰 문제가 아닙니다. – JaredPar
JaredPar에 관해서는 클래스를 사용하는 것에 동의하며 Managed ID를 사용하는 것에는 동의하지 않습니다. 하지만 네, +1 논리를 처리하는 다른 클래스를 사용합니다. – user7116