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^)
.NET Framework (current version)
Sets an object to a specified value and returns a reference to the original object, as an atomic operation.
Assembly: mscorlib (in mscorlib.dll)
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.
| 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
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
Show: