ThreadStaticAttribute クラス
静的フィールドの値がスレッドごとに一意であることを示します。
この型のすべてのメンバの一覧については、ThreadStaticAttribute メンバ を参照してください。
System.Object
System.Attribute
System.ThreadStaticAttribute
<AttributeUsage(AttributeTargets.Field)>
<Serializable>
Public Class ThreadStaticAttribute Inherits Attribute
[C#]
[AttributeUsage(AttributeTargets.Field)]
[Serializable]
public class ThreadStaticAttribute : Attribute
[C++]
[AttributeUsage(AttributeTargets::Field)]
[Serializable]
public __gc class ThreadStaticAttribute : public Attribute
[JScript]
public
AttributeUsage(AttributeTargets.Field)
Serializable
class ThreadStaticAttribute extends Attribute
スレッドセーフ
この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
解説
ThreadStaticAttribute でマークした静的 (Visual Basic では Shared) フィールドは、複数のスレッド間で共有されません。実行中の各スレッドは、そのフィールドのインスタンスを個別に持ち、そのフィールドに対して独自に値を設定および取得します。このフィールドに別のスレッドからアクセスすると、フィールドには別の値が格納されます。
メモ ThreadStaticAttribute でマークしたフィールドの初期値を指定しないでください。このような初期化は、クラスのコンストラクタの実行時に一度だけ行われるもので、関係するスレッドは 1 つだけです。初期値を指定しなければ、フィールドが、値型の場合はその既定値に、参照型の場合は null 参照 (Visual Basic では Nothing) に初期化されることを前提にできます。
この属性はそのまま使用し、そこから他の属性を派生させないようにしてください。ThreadStaticAttribute 構文の例を次に示します。
[ThreadStatic]
static int value;
<ThreadStatic> _
Shared value As Integer
属性の使用方法については、「 属性を使用したメタデータの拡張 」を参照してください。
必要条件
名前空間: System
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
アセンブリ: Mscorlib (Mscorlib.dll 内)
参照
ThreadStaticAttribute メンバ | System 名前空間 | Attribute | Thread | 属性を使用したメタデータの拡張 | スレッド処理