1

以前にも似たような質問をしたので、重複していたらすみません。

これが私の質問です。ページの読み込みにラベルが付いたマスターページがあります。このコントロールをグローバルクラスに渡します。クラス内は次のようなものです。

global class:

private static label myLabel;

public label updateLabel
{
  set {  myLabel = value;}
  get { return myLabel;}
}

マスターページのロードイベントで私は

global.updateLabel = labelOnMasterPage;

ここで、アプリケーションの別の場所にコントロールがあるとします。

global.updateLabel.Text = "my new text for label";

これにより、マスター ページのラベルが更新され、すべてが機能します。現在、これはログインしている1人のユーザーのみで機能しており、このアプリには複数のユーザーがいます。私の質問は、グローバルクラスでラベルを静的に宣言しているため、1人のユーザーのラベルを更新すると、他のユーザーの表示に影響しますか? ?

これにもっと良い方法はありますか?御時間ありがとうございます。

4

2 に答える 2

0

はい、staticスレッドやユーザーに関係なく、アクセスするすべてのコードに適用されます。staticASP.NET のような高度にスレッド化された環境でフィールドが必要になることは非常にまれです。

また、ラベル インスタンスの有効期間を、意図したよりも長く人為的に延長しています。

ユーザーのセッションやアプリケーション レベルなどの代替手段がありますが、ラベル オブジェクトではなく文字列(もしあれば) を保存します。

于 2010-11-18T03:05:39.357 に答える
0

静的クラスにある場合、すべてのユーザーに同じように表示されます。

スレッド数が多いため、ASP.net アプリケーションでこの種のアプローチを使用する場合は注意が必要です。本当にこれを行いたい場合は、おそらくロックを使用してスレッドセーフにすることを検討する必要があります。

個人的にはデータベースに保存しますが、この種のアプローチは非常にハックに思えます。

于 2010-11-18T03:08:30.187 に答える