Assuming that there uiScheduleris a scheduler that will delegate calls in the user interface thread, I would say that the use of these two is functionally indifferent (except that the call to Control.Invoke will block until the call ends, while the call Taskwill not, however, you you can always use Control.BeginInvoketo make them semantically equivalent).
, , Control.Invoke(PaintDelegate) - ; Task , , , , , , , ( , , ). , uiScheduler Control, , , ( , , UI, ).
Control.Invoke , , , , Control , .
, SynchronizationContext ; , , , (Task), , (Control.Invoke).