2013-07-26 2 views
2

정적 속성 MyLanguage을 만들고 하나의 요청으로 1 값을 설정하는 동시에 다른 스레드가 2으로 설정하면 - MyLanguage의 최종 값은 무엇입니까?다른 ASP.NET 요청에 대한 정적 속성

MyLanguge 속성 하나가 ASP.NET 세션에서 공유 되나요?

+0

간단한 asp.net 웹 페이지 아니요. –

+1

질문을 명확하게하기 위해 노력할 수 있습니까? 그것은 문법적인 악몽입니다. 나는 아침 차를 아직 마시지 않았다. 그래서 나만의 질문일지도 모르지만,이 질문은 실제로 어떤 일을 할 수있다. – Shaamaan

+0

NO, If u 세션에 값 1 또는 2를 저장한다. 그러면 각 사용자마다 고유하게된다. .. 세션을 고유하게 공유 할 수 없습니다. –

답변

7

정적 속성/입력란은 앱 도메인에서 공유됩니다. 따라서 모든 세션에는 같은 값이 표시되어야합니다.

정적 인 필드에서 ThreadStatic 속성을 사용하는 경우 만 예외입니다.이 경우 각 스레드는 고유 한 값을 볼 수 있습니다. 예 :

[ThreadStatic] 
static int counter = 0; // each thread sees a different static counter. 
+0

Erosnmez 그래서 각 세션에 자체 정적 값 –

+1

이 없다는 것을 의미합니다. [ThreadStatic]을 지정하지 않으면 자체 값이 아닌 _shared_ 값이 표시됩니다. –

+0

예, ThreadStatic을 사용하는 경우에만 +1 ( –

2

2입니다. 정적 필드, 속성은 개체간에 공유됩니다. 최신 설정 값은 모든 인스턴스에 대한 업데이트입니다.

MSDN

가입일

오히려 특정 개체에보다 형 자체에 속하는 고정 부재를 선언 static 수정을 사용한다. 정적 수정자는 클래스, 필드, 메서드, 속성, 연산자, 이벤트 및 생성자와 함께 사용할 수 있지만 인덱서, 소멸자 또는 클래스가 아닌 유형에서는 사용할 수 없습니다. 추가 정보

+5

"개체간에 공유"라는 용어가 마음에 들지 않습니다. 즉, 개체가 자신과 관련이있는 것으로 나타났습니다. 그것들은 유형과 관련이 있습니다. 필드는 * 인스턴스가 있는지 여부에 관계없이 존재합니다. –

+0

그것은 단지 용어 일뿐입니다. 실제로는 모든 객체가 공유합니다. –

+0

@Rajesh Subramanian 당신은 통계가 객체간에 공유된다고 대답 할 수 있습니다. 오해의 소지가 있습니다. 'Environment.MachineName'은 객체와 공유됩니다. 실제로는 완전히 무관합니다. 통계는 유형에 속하며 개별 객체에는 속하지 않습니다. – andreister

0

통계는 응용 프로그램 도메인에 고유하며 해당 응용 프로그램 도메인의 모든 사용자는 각 정적 속성에 대해 동일한 값을 공유합니다.

정적이라는 단어가 표시되면 "이 인스턴스가 하나만 있습니다."라고 생각하십시오. 인스턴스가 지속되는 시간은 별도의 질문이지만 짧은 대답은 가변적이라는 것입니다.

사용자에게 특정한 값을 저장하려는 경우 Session State에 있습니다.

관련 문제