Windows apps
Collapse the table of content
Expand the table of content
Information
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

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:
static Object^ Exchange(
	Object^% location1,
	Object^ value
)

Parameters

location1
Type: System::Object^%

The variable to set to the specified value.

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
ArgumentNullException

The address of location1 is a null pointer.

Beginning with .NET Framework version 2.0, the Exchange<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.

using namespace System;
using namespace System::Threading;
ref class AtomicExchange
{
private:
   ref class SomeType{};


   // To use Interlocked::Exchange, someType1 
   // must be declared as type Object*.
   Object^ someType1;
   SomeType^ someType2;

public:
   AtomicExchange()
   {
      someType1 = gcnew SomeType;
      someType2 = gcnew SomeType;
   }

   void Switch()
   {
      someType2 = dynamic_cast<SomeType^>(Interlocked::Exchange( someType1, dynamic_cast<Object^>(someType2) ));
   }

};

int main()
{
   AtomicExchange^ atomicExchange = gcnew AtomicExchange;
   Thread^ firstThread = gcnew Thread( gcnew ThreadStart( atomicExchange, &AtomicExchange::Switch ) );
   firstThread->Start();
}

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
Show:
© 2017 Microsoft