静的プロパティを作成し、MyLanguage
あるリクエストがその値を に設定し1
、同時に別のスレッドがその値を に設定した2
場合、 の最終的な値は何になりますMyLanguage
か?
単一のMyLanguge
プロパティは ASP.NET セッション間で共有されますか?
静的プロパティ/フィールドは、アプリ ドメイン全体で共有されます。したがって、すべてのセッションで同じ値が表示されるはずです。
唯一の例外は、静的フィールドでThreadStatic属性を使用する場合です。この場合、各スレッドは独自の値を参照します。例えば
[ThreadStatic]
static int counter = 0; // each thread sees a different static counter.
2 になります。静的フィールド、プロパティはオブジェクト間で共有されるため、最新の設定値はすべてのインスタンスで更新されます。
MSDN から
static 修飾子を使用して、特定のオブジェクトではなく型自体に属する静的メンバーを宣言します。static 修飾子は、クラス、フィールド、メソッド、プロパティ、演算子、イベント、およびコンストラクターで使用できますが、インデクサー、デストラクター、またはクラス以外の型では使用できません。詳細については
静的はアプリケーション ドメインに固有であり、そのアプリケーション ドメインのすべてのユーザーは各静的プロパティに対して同じ値を共有します。
静的という言葉を目にしたら、「これは 1 つしかない」と考えてください。そのインスタンスがどれくらい持続するかは別の問題ですが、簡単な答えはそれが可変であるということです.
ユーザーに固有の値を保存する場合は、Session Stateを調べます。