私はAsp.net mvcアプリケーションを持っており、すべてのユーザー(およびゲスト)のためにいくつかの目的でグローバルカウンタが必要です。私はすべてのユーザーが(時には別のスレッドから)それを変更できることを意味しますが、このカウンタはすべて共通です。 したがって、Asp.Net MVCで静的変数を使用することをお勧めしますか?
1.これは私のコードのどこかに静的変数を作成することをお勧めしますか?
2.問題はありますか?
他の提案はありますか?どうもありがとう!
私はAsp.net mvcアプリケーションを持っており、すべてのユーザー(およびゲスト)のためにいくつかの目的でグローバルカウンタが必要です。私はすべてのユーザーが(時には別のスレッドから)それを変更できることを意味しますが、このカウンタはすべて共通です。 したがって、Asp.Net MVCで静的変数を使用することをお勧めしますか?
1.これは私のコードのどこかに静的変数を作成することをお勧めしますか?
2.問題はありますか?
他の提案はありますか?どうもありがとう!
ここで何かを言うのは難しいです。静的には問題はありません。どのように使用しているかによって異なります。あなたが言ったように、いくつかのグローバルなカウンターを変えて入れています。したがって、複数のスレッドがそれを変更します。右?この呼び出しがスレッドセーフであることを確認してください。さもなければ、カウンターは間違っているでしょう。
これはめったに書かれておらず、読み込み専用の価値がある場合は、まったく問題ではありませんでした。
この値が設計時にわかっている場合は、const
を使用することをお勧めします。
また、IISリサイクルアプリケーションプールを検討する必要があります。その場合、新しいアプリケーションインスタンスが作成され、静的変数の2つのコピーが存在します。
これですべて問題が発生しない場合は、静的です。
アプリケーションが再起動したらどうなりますか?カウンタは0にリセットされます。使用するカウンタは何ですか?より良い選択肢があるかもしれません。カウンタをインクリメントする場合は、 'Interlocked.Increment'のようなスレッドセーフなメカニズムを使用することを忘れないでください。 - ' counter ++ 'は競合状態を引き起こします。 –