2012-02-29 14 views

答えて

7

どのクラスでもインスタンスを保持することができますが、キューがどのような機能を担っているかをクラス内で結合するのが最も理にかかります。

例えばCacheクラス:

public class MyCache 
{ 
    public static ConcurrentQueue Queue { get; private set; } 

    static MyCache() 
    { 
      Queue = new ConcurrentQueue(); 
    } 
} 

これはそれMyCacheというクラスが使用されている最初の時間を初期化します。細かい粒度制御が必要な場合は、Global.asax.csファイルがアプリケーションの起動時に呼び出すInitializeメソッドを作成することができます。

2

ファイルGlobal.asax.cs,protected void Application_Start()メソッドオーバーロード。

もう1つの方法は、シングルトン/静的クラスを作成することです。

+0

ここで、コードから後でアクセスするためにConcurrentQueue変数を宣言する必要がありますか? – Tomas

+0

'Global.asax.cs'アプローチでは、直接Global.asax.csにあります。例えば、Application_startの上の1行は、' public static ConcurrentQueue Queue {get;プライベートセット; } 'を呼び出し、Application_Startで初期化します。 Singleton-staticクラスについては、@ChrisS answerを参照してください。 –

3

あなたは可能性:

  1. いくつかのコードが実際にタイプ
  2. のGlobal.asaxを使用した場合にのみ作成されていますので、静的コンストラクタでそれを作成します。
  3. 使用WebActivator - Global.asaxファイルを汚染しないで、別のアセンブリでキューを作成できます。
関連する問題