Asynchronous tasks are often misunderstood so here's a short note about them. You'll find a fuller description in the online documentation. Asynchronous tasks only terminate when a terminating event is received. This makes them especially suitable for tasks where you want to be absolutely sure that the user has done what was intended. The event is usually triggered within the method itself when the terminating condition is met.