1

次のような投稿を読みました: ASP.net で静的変数を使用して情報をキャッシュしても問題ありませんか? .

静的変数の可視性を理解しようとしています。ASP.NET プロセス (W3WP) が 1 つあります。Web ガーデンが存在することは認識していますが、私のシナリオでは 1 つあります。複数のクライアントが接続できます。これらのクライアントの 1 つが静的 (共有) 整数を 10 に設定した場合、すべての Web クライアントは Shared 変数を 10 と見なしますか? 共有変数がアプリケーション設定またはセッション設定のようなものかどうかを理解しようとしています。

これは VB.NET (クライアント アプリケーション) にも当てはまりますか。複数の VB.NET クライアントが単一のアプリ ドメインを使用できるようにすることについて説明している記事を読みました。静的変数は、単一のアプリ ドメインを持つすべてのクライアントで共有されますか?

4

1 に答える 1

3

静的/共有変数は AppDomain ごとであるため、その AppDomain に対するすべてのクライアントは同じ値を参照しますはい、アプリケーション設定に広く匹敵します。

(注意: フィールドが とマークされている場合を除きますが[ThreadStatic]、これは Web アプリケーションでは非常に悪い考えです。)

特にスレッド化された環境では、静的/共有フィールドの使用には十分に注意する必要があります。ユーザー/セッション間でステート ブリーディングが正しく行われないことに加えて、これらには固有のスレッド セーフの問題があり、通常はそれらへのアクセスを非常に慎重に同期する必要があります。たとえば、List<T>複数のスレッドが同時に追加/削除/etc できる場合、静的は非常に危険です。

于 2012-07-23T08:38:51.687 に答える