문제

다양한 객체가 공통 코드에 액세스 할 수있는 VB.NET 응용 프로그램이 있으며 모든 통화간에 공유 된 카운터와 값이 있으므로 현재 "공유 클래스"를 사용하고 있습니다 (클래스 CAN을 알고 있습니다. 공유, 그 자체로 공유되지만 모든 변수와 방법은 "공유"로 표시됩니다).

내 우려는이 객체의 가시성에 대한 것입니다. 사용자가 동일한 데스크탑에서 응용 프로그램의 두 인스턴스를 실행하면 공유 클래스의 동일한 "인스턴스"를 사용합니까? 다시 말해, 응용 프로그램의 두 사본이 동일한 카운터를 증가시키고 동일한 변수를 사용합니까?

또한 동일한 컴퓨터의 두 사용자 공간은 어떻습니까? 각 사용자가 사본을 실행하면 두 사본이 방해됩니까?

아마도 나는 "공유 된"개념을 자호하고 있으며이를 수행하는 훨씬 더 좋은 방법이 있습니다 (일부 사람들은 클래스 대신 모듈을 통해 코드를 공유하는 것을 알고 있습니다). 전체 응용 프로그램에서 객체 (변수와 방법 모두)를 공유하는 더 나은 방법이 있지만 다른 응용 프로그램 인스턴스와 분리되어 있으십니까?

업데이트 : "선호하는"방법에 대한 질문에 대한 응답으로, 내가 쓰고있는 응용 프로그램은 사용자가 실행중인 다른 인스턴스 사이에도 데이터를 비공개로 유지해야합니다. 이 경우 여러 인스턴스간에 데이터를 전혀 공유하고 싶지 않으므로 공유 클래스 또는 모듈을 사용하는 부작용에 대해 우려합니다. 질문에 감사드립니다.

도움이 되었습니까?

해결책

단일 사용자 또는 여러 사람이 실행하든 응용 프로그램의 각 인스턴스에는 자체 공유 필드 사본이 표시됩니다.

이 블로그 항목 정적/공유 필드가 기본 컨텍스트가 아닌 스레드와 같은 항목으로 appdomain이 아닌 스레드와 같은 항목으로 범위가 붙어있는 경우를 더 자세히 설명합니다.

다른 팁

공유 값 (또는 C#ER 인 경우 정적)은 앱 도메인에만 공통적입니다.

여러 앱 도메인을 동일한 프로세스에로드 할 수 있으며 각각 자체 공유 값 세트가 있습니다.

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