Using ConfigureAwait(false) tells awaiter not to resume recording in the captured context, so the SynchronizationContext ignored. This means that a continuation will be scheduled by default for the TaskScheduler , which uses ThreadPool threads.
If the original thread was a ThreadPool thread, the continuation might work on the same thread, otherwise you would guarantee its other thread.
You can run your test using a dedicated thread without a SynchronizationContext (or with ConfigureAwait(false) ) to make sure that the threads are different before and after the async operation.
source share