I have a function, which returns a Task to do anything with that.
I have a custom form, ProgressDialog, whose constructor takes a Task to execute. This dialog displays the state of the Task, but it's not important.
The dialog has a Cancel button. If the user clicks on that, the Task should be canceled, but how can I do this? There I have only the Task object, not the CancellationTokenSource (which I could cancel the Task with).
Why can't I cancel the Task via the Task object itself?
The short answer would be you can't do this. If you want to cancel something, you need to provide a cancellation token of some form. The expected pattern is outlined nicely here: