"All BeginInvoke in the same thread" is absurd.
BeginInvoke
will always delegate your delegate parameter to be called to UI thread, and, if it is, by some weird reason, is itself called in the UI thread, it will work, but would make no practical sense, will only create one useless level of indirection.
Would Task be appropriate? Appropriate for what? It depends. If you explained some real goals someone or myself would probably advised you. But you specified some imaginary or maybe just poorly explained goal. Not any task. The idea of using one or another technique cannot be a goal. If you want to achieve something, you should better avoid mixing your questions with your ideas on how to achieve that. However, again, it depends.
To make the idea of invocation clear to you, please read my past answers:
Control.Invoke() vs. Control.BeginInvoke()[
^],
Problem with Treeview Scanner And MD5[
^].
As to the custom task scheduler, it is rarely can be useful:
https://msdn.microsoft.com/en-us/library/ee789351%28v=vs.110%29.aspx[
^].
I really doubt that, even after your realize your real goals, it will help you. Again, it depends.
It really need deep understanding of the topic, to design your code properly using this approach.
—SA