ASP.NET:スレッド毎のグローバル変数(ThreadStatic)
ASP.NETでグローバル変数を使う場合には、注意が必要です。 ASPは1個のプロセスとして動作するため、グローバル変数として宣言された変数は1カ所にしか存在しません。
そのため、複数のユーザから同時にアクセスが在った場合、そのグローバル変数を上書きする様な ことがあれば、問題が発生します。
この問題を解決するためには、 ThreadStatic を用いて、 その変数をスレッドで静的と宣言すれば、各ユーザ毎には別のグローバル変数が対応付けられます。
ASP.NETではアクセスが在ったときには、スレッドを生成し、 使い終わった時にはそれを廃棄せずにプールする様です。 次のアクセス時にはプールされたものが使われる可能性があるので、 上記のグローバル変数を使う前には必ず初期化が必要だと思います。
コメント