我有一个TList
由许多for
循环连续处理的项目。我有时需要交换列表中的项目以重新排列列表的视觉表示顺序(在 a 中StringGrid
)。
我如何交换这些物品?
我的初步想法是:
- 在 for 循环期间,我认为不应交换项目。
- 如果我在定时器
OnTimer
事件中进行交换,将定时器的间隔设置为非常短的间隔(例如 1 毫秒),那么我认为 for 循环将只有一毫秒的间歇。
这行得通吗?还是有更好的选择?
我有一个TList
由许多for
循环连续处理的项目。我有时需要交换列表中的项目以重新排列列表的视觉表示顺序(在 a 中StringGrid
)。
我如何交换这些物品?
我的初步想法是:
OnTimer
事件中进行交换,将定时器的间隔设置为非常短的间隔(例如 1 毫秒),那么我认为 for 循环将只有一毫秒的间歇。这行得通吗?还是有更好的选择?
只要您确保 a 中项目的数量TList
不变,在 for 循环期间交换项目就完全可以了。请注意,根据即将交换的项目的索引,某些项目可能无法处理或可能会被处理两次。
如果交换操作不是从 for 循环中调用的,那么一个已经启动的 for 循环将一直运行直到它完成。您不能指望“闯入” Timer,因为在 for 循环和所有周围代码完成之前,不会处理 Timer 的消息。
因此,您的问题的解决方案可能是: