Manage Program Flow - Multithreading

You need to implement cancellation for a long running task. Which object do you pass to the task?

Volatile
Boolean isCancelled variable
CancellationTokenSource
CancellationToken