I will explain in general terms, not exactly.
When you want to execute a method asynchronously, you create a task.
This task is performed by an arbitrary thread from the thread pool.
But what if you need to make the method execute in a specific thread?
This is a common task for UI elements - they should always only run on the main thread of the application.
To solve this problem, Dispatchers for threads were created.
Each thread can only have one dispatcher.
It is created the first time you access it.
Using the Thread Dispatcher, you can execute your asynchronous method on this thread.
Invoke - Executes a method synchronously on the Dispatcher thread.
It's like just calling a regular synchronous method.
Execution of the main method (in which Invoke was called) will not continue until the method passed to Invoke is executed.
The thread in which the main method is executed also stops.
Invoke used extremely rarely.
InvokeAsync and BeginInvoke are asynchronous execution.
They differ in small details - I will not go into their explanation now.
These methods return a DispatcherOperation object.
With which you can interact with the task executing your method.
The most common use is BeginInvoke without receiving a DispatcherOperation.
The best way to load data is to create a Model with asynchronous methods (async-await).
After loading the data, the ViewModel will receive this data and provide it in its properties.
When the ViewModel property changes its value, you need to raise the PropertyChanged event (the ViewModel must necessarily implement INotifyPropertyChanged).
In what streams this happens - it does not matter.
UI elements (WPF View) will receive this data through bindings of the ViewModel properties .
The mechanism of bindings is designed in such a way that regardless of the thread in which the property has changed, the binding will update the UI element always in their Dispatcher.
With such an implementation, you do not need to worry about the streams in which data is received from the database or other work with data occurs.