次の方法で共有


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 | 属性を使用したメタデータの拡張 | スレッド処理