2017-06-06 8 views
2

私はAsp.net mvcアプリケーションを持っており、すべてのユーザー(およびゲスト)のためにいくつかの目的でグローバルカウンタが必要です。私はすべてのユーザーが(時には別のスレッドから)それを変更できることを意味しますが、このカウンタはすべて共通です。 したがって、Asp.Net MVCで静的変数を使用することをお勧めしますか?

1.これは私のコードのどこかに静的変数を作成することをお勧めしますか?

2.問題はありますか?

他の提案はありますか?どうもありがとう!

+0

アプリケーションが再起動したらどうなりますか?カウンタは0にリセットされます。使用するカウンタは何ですか?より良い選択肢があるかもしれません。カウンタをインクリメントする場合は、 'Interlocked.Increment'のようなスレッドセーフなメカニズムを使用することを忘れないでください。 - ' counter ++ 'は競合状態を引き起こします。 –

答えて

1

ここで何かを言うのは難しいです。静的には問題はありません。どのように使用しているかによって異なります。あなたが言ったように、いくつかのグローバルなカウンターを変えて入れています。したがって、複数のスレッドがそれを変更します。右?この呼び出しがスレッドセーフであることを確認してください。さもなければ、カウンターは間違っているでしょう。

これはめったに書かれておらず、読み込み専用の価値がある場合は、まったく問題ではありませんでした。

この値が設計時にわかっている場合は、constを使用することをお勧めします。

また、IISリサイクルアプリケーションプールを検討する必要があります。その場合、新しいアプリケーションインスタンスが作成され、静的変数の2つのコピーが存在します。

これですべて問題が発生しない場合は、静的です。

関連する問題