Du solltest dir einmal anschauen was es da noch alles für Interlocked-Funktionen gibt.

Unter anderem InterlockedExchange, InterlockedAnd, InterlockedXor, ...

Siehe Dokumentation:
http://msdn.microsoft.com/en-us/library/ms683614.aspx
// EDIT:
Allerdings könnte ein anderer Thread trotzdem den Wert zwischen den beiden Operationen auslesen.