Interlocked.Exchange Method (Object, Object)


Sets an object to a specified value and returns a reference to the original object, as an atomic operation.

Namespace:   System.Threading
Assembly:  mscorlib (in mscorlib.dll)

Public Shared Function Exchange (
	ByRef location1 As Object,
	value As Object
) As Object


Type: System.Object

The variable to set to the specified value.

Type: System.Object

The value to which the location1 parameter is set.

Return Value

Type: System.Object

The original value of location1.

Exception Condition

The address of location1 is a null pointer.

Beginning with .NET Framework version 2.0, the Exchange(Of T)(T, T) method overload provides a type-safe alternative for reference types.

The following code example shows the syntax for using Exchange with any reference type object.

Imports System
Imports System.Threading

Public Class AtomicTest

    <MTAThread> _
    Shared Sub Main()
        Dim atomicExchange As New AtomicExchange()
        Dim firstThread As New Thread(AddressOf atomicExchange.Switch)
    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

Universal Windows Platform
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Windows Phone Silverlight
Available since 8.0
Windows Phone
Available since 8.1
Return to top