Personally, I would avoid subclassing Task (or Task<T>). This will cause TaskFactory to not behave correctly, but can also lead to a loss of flexibility or a very high required implementation for all functions.
I would instead create a class that schedules and runs a task for you. This class can be used to generate all your tasks (even just returning the task using the factory method). Inside, it can easily track your graphical information, use continuations in constructed tasks to track completion or failure events, etc.
source
share