私のアプリはフォルダーの画像をスキャンし、それらからサムネイルを生成してグリッドに描画します。OnDrawCell
OTL にタスクを追加して、必要な画像を読み取り、サイズを変更 (非同期) し、セルに (メインスレッドで) 描画するハンドラーがあります。ユーザーがグリッドをすばやくスクロールする場合を除いて、これは正常に機能します。これにより、数百のタスクがキューに追加されます。キューは FIFO (先入れ先出し)のように機能するため、ユーザーはスクロール先の画像が表示される前に、すべての画像が処理されるまで待機する必要があります。
私の現在のコード:
CreateTask(
procedure(const task: IOmniTask)
....
end)
.OnTerminated(
procedure(const task: IOmniTaskControl)
begin
....
end)
.Unobserved
.SetPriority(tpIdle)
.Schedule;
LIFO (後入れ先出し) 方式で実行されるタスクの追加を設定するにはどうすればよいですか?
もちろん、すでに処理中のタスクは続行する必要があります。最後に追加されたものになるように、キューから次のものを取得する必要があります。