3

次のような値を取得した場合:

string value = ConfigurationManager.AppSettings["Key"];

私は、.Net (私の場合は MVC4) がアプリ ドメインの開始時にアプリ設定を解析し、実際にメモリから読み取っていることを期待しています。

そうではなく、これが毎回ファイルにヒットする場合、AppSettings を取得するときにスレッド セーフの保証はありますか?

Google-Fu をすぐに試してみましたが、うまくいきませんでした。

私はこのメカニズムを使用して、コンストラクターにインスタンス フィールドを設定する傾向があります。

public class MyThing 
{
  private readonly string thingValue;

  public MyThing() 
  {
    thingValue = ConfigurationManager.AppSettings["Key"];
  }
}

最近、競合状態が発生して「構成設定を読み取れなかった」ために外部依存関係が失敗するシナリオがありました。

これは私が不思議に思う:

  • AppSettings はスレッドセーフですか?
  • readonly 文字列パターンは十分な保護を提供しますか?
4

1 に答える 1