次の方法で共有


SynchronizationAttribute クラス

現在のコンテキスト、および同じインスタンスを共有するすべてのコンテキストの同期ドメインを適用します。

この型のすべてのメンバの一覧については、SynchronizationAttribute メンバ を参照してください。

System.Object
   System.Attribute
      System.Runtime.Remoting.Contexts.ContextAttribute
         System.Runtime.Remoting.Contexts.SynchronizationAttribute

<AttributeUsage(AttributeTargets.Class)>
<Serializable>
Public Class SynchronizationAttribute   Inherits ContextAttribute
[C#]
[AttributeUsage(AttributeTargets.Class)]
[Serializable]
public class SynchronizationAttribute : ContextAttribute
[C++]
[AttributeUsage(AttributeTargets::Class)]
[Serializable]
public __gc class SynchronizationAttribute : public   ContextAttribute
[JScript]
public
   AttributeUsage(AttributeTargets.Class)
 Serializable
class SynchronizationAttribute extends ContextAttribute

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

この属性をオブジェクトに適用する場合、このプロパティのインスタンスを共有するすべてのコンテキスト内で実行できるスレッドは 1 つだけです。それぞれのコンテキストの着信呼び出しを受け取り、シリアル化するシンクを提供することによって実行されます。プロパティが再エントリとしてマークされている場合は、コールアウトも受け取られます。コールアウトを受け取ることにより、待機している他のスレッドが同期ドメインに参加できるようになり、最大限のスループットを実現できます。

メモ    SynchronizationAttribute という名前のクラスが 2 つあります。1 つは System.Runtime.Remoting.Contexts 名前空間に格納され、もう 1 つは System.EnterpriseServices 名前空間に格納されています。 System.EnterpriseServices.SynchronizationAttribute クラスは、同期呼び出しだけをサポートし、サービス コンポーネントだけで使用できます。サービス コンポーネントの詳細については、「 サービス コンポーネントの概要 」を参照してください。 System.Runtime.Remoting.Contexts.SynchronizationAttribute は、同期呼び出しおよび非同期呼び出しをサポートし、コンテキスト バインド オブジェクトだけで使用できます。コンテキスト バインド オブジェクトの詳細については ContextBoundObject クラスのトピックを参照してください。

メモ   このクラスは、リンク確認要求と継承確認要求をクラス レベルで行います。直前の呼び出し元または派生クラスにインフラストラクチャ アクセス許可がない場合、 SecurityException がスローされます。セキュリティ要求の詳細については、「 リンク確認要求 」および「 継承確認要求 」を参照してください。

使用例

[Visual Basic, C#, C++] SynchronizationAttribute の使用方法については、次のコード例を参照してください。完全なコード例については、 AsyncResult クラスの例を参照してください。

 
' Context-bound type with the Synchronization context attribute.
<Synchronization()> Public Class SampleSyncronized
   Inherits ContextBoundObject
   
   ' A method that does some work, and returns the square of the given number.
   Public Function Square(i As Integer) As Integer
      
      Console.Write("The hash of the thread executing ")
      Console.WriteLine("SampleSyncronized.Square is: {0}", Thread.CurrentThread.GetHashCode())
      Return i * i
   End Function 'Square

End Class 'SampleSyncronized

[C#] 
// Context-bound type with the Synchronization context attribute.
[Synchronization()]
public class SampleSyncronized : ContextBoundObject {

    // A method that does some work, and returns the square of the given number.
    public int Square(int i)  {

        Console.Write("The hash of the thread executing ");
        Console.WriteLine("SampleSyncronized.Square is: {0}", 
                             Thread.CurrentThread.GetHashCode());
        return i*i;
    }
}

[C++] 
// Context-bound type with the Synchronization context attribute.
[Synchronization]
public __gc class SampleSyncronized : public ContextBoundObject 
{
    // A method that does some work, and returns the square of the given number.
public:
    int Square(int i) 
    {
        Console::Write(S"The hash of the thread executing ");
        Console::WriteLine(S"SampleSyncronized::Square is: {0}",
                    __box(Thread::CurrentThread->GetHashCode()));
        return i*i;
    }
};

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Runtime.Remoting.Contexts

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

アセンブリ: Mscorlib (Mscorlib.dll 内)

.NET Framework セキュリティ:

参照

SynchronizationAttribute メンバ | System.Runtime.Remoting.Contexts 名前空間