我的应用程序扫描文件夹中的图像并从中生成缩略图以在网格中绘制。我有一个OnDrawCell
处理程序,它向 OTL 添加一个任务来读取所需的图像,调整它的大小(异步)并返回到一个单元格(在主线程中)。这很好用,除非用户在网格中快速滚动 - 这会将数百个任务添加到队列中。队列的工作方式类似于 FIFO(先进先出),因此用户必须等待所有图像都被处理,然后才能看到滚动到的图像。
我当前的代码:
CreateTask(
procedure(const task: IOmniTask)
....
end)
.OnTerminated(
procedure(const task: IOmniTaskControl)
begin
....
end)
.Unobserved
.SetPriority(tpIdle)
.Schedule;
如何设置添加以 LIFO(后进先出)方式执行的任务?
当然,已经在处理的任务应该继续。我需要从队列中取出的下一个是最后添加的。