문제

DLL을 만들고 항목을 "공유"(C#의 정적)로 선언 할 때 처음 호출 될 때 인스턴스화 된 다음 해당 객체 참조는 단일 참조로 사용됩니다.

따라서 일단 공유 문자열 속성을 선언하면 동일한 값을 다시 시작하기 위해 다시 호출 할 수 있습니다. 그리고 그 스레드 안전은 응용 프로그램 영역 내에서 주요 관심사입니다.

응용 프로그램 도메인 외부에서 발생하는 일. GAC (Global Application Cache)에 어셈블리를 넣으면 몇 개의 인스턴스가 존재합니까?

예를 들어 Gac'ed .dll에서 "myfilename"이라는 정적 속성입니다.

그런 다음 gac'ed .dll을 호출하는 두 가지 응용 프로그램이 있습니다. "myfilename"의 인스턴스는 몇 개가 존재합니까? 응용 프로그램에서 1 개의 사본이 응용 프로그램이 사용하는 값으로 MyFilename으로 변경됩니까?

도움이 되었습니까?

해결책

DLL은 AppDomain 내에서 인스턴스화되므로 AppDomain이있는 것만 큼 많은 다른 사본이 있습니다. 데이터는 appDomains간에 전송되지 않습니다. GAC에 DLL을 넣으면 모든 곳에서 한 곳에서 사용할 수있게되면 .NET의 메모리 모델을 변경하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top