Task.Run: Queues the specified work to run on the ThreadPool and returns a task or Task<TResult> handle for that work.
Parallel.Invoke: Executes each of the provided actions, possibly in parallel.
Effectively they spin up a new thread from the thread pool. So is Parallel.Invoke same as calling multiple Task.Runs?