This documentation is archived and is not being maintained.
Interlocked::Exchange Method (Object%, Object)
Visual Studio 2010
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(); }
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Show: