With the continuation model, you're scheduling the continuation for asynchronous processing when the original task finishes. This means that a thread could potentially pick up your original task, process it, pick up some other work, process that, and only at some later point pick up your continuation for processing.
Without a continuation, you're guaranteed that the processing thread will execute both statements before the task completes.
I admit I have limited experience with these scenarios, but a couple of reasons that jump to mind for using continuations:
- You're scheduling other work that you want (potentially) processed before the continuation.
- You want a way to alert the calling thread that the first statement has finished (i.e. to update some piece of UI) but don't care much that the second has finished.