静的変数のライフサイクルを設定する方法はありますか?つまり、リセットされるまでにどれだけ長く存続するのですか?適用できる属性があるのではないかと期待していました。
6571 次
4 に答える
9
静的変数の値の有効期間は、AppDomainを含む値と同じです。つまり。新しいAppDomainを取得すると(IISアプリケーションが再起動するため)、静的変数の新しいコピーを取得します。
于 2012-07-09T12:05:00.757 に答える
3
静的メンバーは、型のインスタンスではなく、型自体に関連付けられます。したがって、それらのライフサイクルは作成のタイミングと順序に制限され、タイプのインスタンスによって「リセット」されることはありません。
于 2012-07-09T11:44:26.623 に答える
1
私の場合、ASP.NETを使用しているので、問題のアイテムは1つの要求のライフサイクルの間「ライブ」のままである必要があるため、それについて考えた後、HttpContext["Items"]コレクションが最適です。たとえば、代わりに次の場合:
private static SomeObject _books;
protected static SomeObject Books
{
get
{
if (_books == null) {
_books = new SomeObject();
}
return _books ;
}
}
protected static SomeObject AVariable
{
get
{
SomeObject books = HttpContext.Current.Items["books"] as SomeObject;
if (books == null) {
books = new SomeObject();
HttpContext.Current.Items["books"] = books;
}
return books;
}
}
于 2012-07-10T12:54:36.317 に答える
0
静的変数は、アプリケーションの存続期間中保持され、すべてのスレッド間で共有されます。アプリケーションが再起動したときにのみリセットされます(たとえば、web.configの変更)。
これがキャッシュのようなものである場合は、定期的に値を更新するようにタイマーを設定することをお勧めします。
于 2012-07-09T11:35:22.393 に答える