2009-06-14 8 views
1

データベースから取得した情報をキャッシュしようとしています。私は静的List <>メンバーを使って情報を保存することに決めました。 lock文を使ってアクセスを保護する必要があるマルチスレッドアプリケーションでは、リスト<の経験から知っています。私は自分のAsp.Netコード内のコードをまったく同じ方法で扱いますか?ロックステートメントは引き続き機能しますか?ASP.Netの静的オブジェクト

答えて

2

ロックが効きます。ワーカープロセスが複数ある場合は、複数のバージョンのリストが作成されることに注意してください。それぞれは独自のロックによって保護されます。

ここで本当に危険なのは、ロックを解除できないと、Webアプリケーション全体がハングアップする可能性があるということです。 ASP.NETページの実行中にユーザーが切断されることがあります。予想外の時に投げられる例外に注意してください。

+0

これは可能ですか?私はlock(){}がロックが解放されることを保証しているという印象を受けました。また、ASP.Netが全く新しいプロセスに対して要求に対して新しいスレッドを作成する頻度を知ることができますか、少なくとも知っていますか? –

+0

ロック(){}を同意すると、ロックの解放が保証されます。アプリケーションプール設定の[最大ワーカープロセス]でIISのプロセス数を構成できます。デフォルトは1です。つまり、プロセスは1つだけです。 – Andomar

+0

ありがとうございました! +1 –

5

リストメソッドのロックステートメントは間違いなく機能しますが、ASP.NETアプリケーションにキャッシュ機能が必要な場合は、この機能に合わせてCacheクラスを使用することをお勧めします。

+0

ありがとう!私はこれを調べます。 +1 –

関連する問題