It is meant for a cancel button. If you click the cancel button, it call CancelAsync().
In your BackgroundWorker DoWork you scan for when E.Cancel =true. If you detect E.Cancel is true, then you stop the code inside the Background worker in a controlled way.
This allows you to cleanup what you are doing inside the BackgroundWorker instead of forcefully stopping it where it is.
You can use Global Variables to do this. CancelAsync is just a cleaner way of doing it.