Forgive me if this is a simple question; I couldn\'t phrase it in a generic enough way to search for the answer.
Consider this code:
var task = Task.
Will it wait until the main thread is currently finished doing whatever it is doing, or will it get called immediately after the asynchronous call is complete?
When the asynchronous call completes, the continuation will be scheduled. The effect of that scheduling depends on the scheduler (of course) but for a "normal" WPF or Windows Forms message loop, I'd expect it to be scheduled in a similar way to a call to Control.BeginInvoke
or Dispatcher.BeginInvoke
- in other words, when the "main" thread has finished the rest of the tasks which had been scheduled before this one.
I wouldn't expect the main thread to magically stop what it's doing and execute the continuation. It could make the continuation a high-priority task in its queue, however.