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 セキュリティ:
- SecurityPermission (インフラストラクチャ コードを操作するために必要なアクセス許可)要求値: SecurityAction.LinkDemand; アクセス許可値: SecurityPermissionFlag.Infrastructure
- SecurityPermission (インフラストラクチャ コードを操作するために必要なアクセス許可)要求値: SecurityAction.InheritanceDemand; アクセス許可値: SecurityPermissionFlag.Infrastructure
参照
SynchronizationAttribute メンバ | System.Runtime.Remoting.Contexts 名前空間