Start here. This is the direct spoken answer to practice first.
Why this question matters
Both tools can prevent a race, but they protect different shapes of work. The important distinction is a single atomic state transition versus an invariant that spans several reads and writes.
I use Interlocked for a small atomic operation on one value, such as incrementing a counter, exchanging a reference, or updating a value with compare-and-swap. I use lock when several operations must behave as one critical section. For example, checking a balance, subtracting an amount, and recording the new state is a multi-step invariant that one atomic increment cannot protect. The choice depends on the state transition, not on which syntax looks faster.