質問
これはおそらく私が見逃した単純なものです。
私がそうしているとしましょう(loveley VBで):
Dim t1 As New Task(Sub() Debug.WriteLine("t1"))
Dim t2 As Task = t1.ContinueWith(Sub() Debug.WriteLine("t2"))
Dim t3 As Task = t1.ContinueWith(Sub() Debug.WriteLine("t3"))
t1.Start()
t1.ContinueWith が 2 回使用されていることに注意してください。これらのタスクの優先実行順序は? 私にとって、それはランダムか間違っています。
なんで?
やりたい理由は…
- データを取得して返すタスクを作成する
- 続いて、UI を「整理」するタスク
TaskScheduler.FromCurrentSynchronizationContext()
(UI スレッド) - データを長いレポートに変換して、元のデータ取得タスクに従います (時間がかかります)。
- UI スレッドに戻り、そのレポートをプレビュー コントロールに割り当てます。
- クリーンアップ (進捗アニメーションなどを取り除く)
これは、ステップ 4 がオプションであるため、さらに複雑になります。
これらすべての最中に、UI とタスクが適切に機能するように、私のタスクは逆方向に曲がってメンバー プロパティを設定しています。おそらく、タスクの結果を完全に捨てて、メンバー変数の同期に固執する必要があります。結局、それらはすべて一度だけ割り当てられます。
ありがとう、トム