これが単純な質問である場合は、ご容赦ください。答えを探すのに十分な一般的な言い方をすることができませんでした。
このコードを考えてみましょう:
var task = Task.Factory.StartNew(() => Whatever());
task.ContinueWith(Callback, TaskScheduler.FromCurrentSynchronizationContext())
コールバックメソッドがいつ実行されるかはどの程度正確に決定されますか?
メインスレッドが現在実行していることをすべて終了するまで待機しますか、それとも非同期呼び出しが完了した直後に呼び出されますか?そして、このコールバックは、メインスレッドが以前の状態に戻る前に完全に実行されますか?