次のような奇妙なコードを観察しています。
var task = new Task(...); // run in the background, do something lengthy work
task.ContinueWith(..., TaskScheduler.FromCurrentSynchronizationContext());
task.Start();
そこで 2 番目のタスクがイベントを呼び出し、それが次に GUI を更新しようとすると、恐ろしいクロススレッド例外が発生します。
Thread.CurrentThread.ManagedThreadId
2 番目のタスクのメソッドを確認すると、実際には UI スレッドで実行されていないことがわかります。
タスクを生成したコードは、UI スレッドで実行されています。
これがうまくいかないシナリオはありますか?