If the task-executing source wishes to cancel the contained task, then it calls CancelAndDelete(). This sets the abort flag to true, and spanws a TDeleterTask that will take ownership of the now-discarded background task, watch for it to be complete, and delete it, then delete itself.