Interlocked.Exchange メソッド
分割不可能な操作として指定した値を変数として設定します。
オーバーロードの一覧
分割不可能な操作として指定した値を 32 ビット符号付整数として設定し、元の値を返します。
.NET Compact Framework でもサポート。
[Visual Basic] Overloads Public Shared Function Exchange(ByRef Integer, Integer) As Integer
分割不可能な操作として指定した値をオブジェクトとして設定し、元のオブジェクトへの参照を返します。
.NET Compact Framework でもサポート。
[Visual Basic] Overloads Public Shared Function Exchange(ByRef Object, Object) As Object
[JScript] public static function Exchange(Object, Object) : Object;
分割不可能な操作として指定した値を単精度浮動小数点数として設定し、元の値を返します。
[Visual Basic] Overloads Public Shared Function Exchange(ByRef Single, Single) As Single
[JScript] public static function Exchange(float, float) : float;
使用例
[Visual Basic, C#, C++] Exchange を参照型オブジェクトと共に使用する場合の構文の例を次に示します。
[Visual Basic, C#, C++] メモ ここでは、Exchange のオーバーロード形式のうちの 1 つだけについて、使用例を示します。その他の例については、各オーバーロード形式のトピックを参照してください。
Imports System
Imports System.Threading
Public Class AtomicTest
Shared Sub Main()
Dim atomicExchange As New AtomicExchange()
Dim firstThread As New Thread(AddressOf atomicExchange.Switch)
firstThread.Start()
End Sub
End Class
Public Class AtomicExchange
Public Class SomeType
End Class
' To use Interlocked.Exchange, someType1
' must be declared as type Object.
Dim someType1 As Object
Dim someType2 As SomeType
Sub New()
someType1 = New SomeType()
someType2 = New SomeType()
End Sub
Sub Switch()
someType2 = CType(Interlocked.Exchange( _
someType1, CType(someType2, Object)), SomeType)
End Sub
End Class
[C#]
using System;
using System.Threading;
class AtomicTest
{
static void Main()
{
AtomicExchange atomicExchange = new AtomicExchange();
Thread firstThread =
new Thread(new ThreadStart(atomicExchange.Switch));
firstThread.Start();
}
}
class AtomicExchange
{
class SomeType{}
// To use Interlocked.Exchange, someType1
// must be declared as type Object.
object someType1;
SomeType someType2;
public AtomicExchange()
{
someType1 = new SomeType();
someType2 = new SomeType();
}
public void Switch()
{
someType2 = (SomeType)Interlocked.Exchange(
ref someType1, (object)someType2);
}
}
[C++]
#using <mscorlib.dll>
using namespace System;
using namespace System::Threading;
__gc class AtomicExchange
{
__gc class SomeType{};
// To use Interlocked::Exchange, someType1
// must be declared as type Object*.
Object* someType1;
SomeType* someType2;
public:
AtomicExchange()
{
someType1 = new SomeType();
someType2 = new SomeType();
}
void Switch()
{
someType2 = dynamic_cast<SomeType*>(Interlocked::Exchange(
&someType1, dynamic_cast<Object*>(someType2)));
}
};
void main()
{
AtomicExchange* atomicExchange = new AtomicExchange();
Thread* firstThread = new Thread(
new ThreadStart(atomicExchange, AtomicExchange::Switch));
firstThread->Start();
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。