【发布时间】:2020-05-28 21:34:30
【问题描述】:
我正在尝试进行搜索,该搜索在单独的线程上运行并使用 Synchronize 使用匹配的项目更新列表视图。
以前当搜索在主线程上工作时。我正在使用 TButtonedEdit 的 onchange 事件。检测用户希望搜索的字符串。 & 对 listview 项目执行搜索。
我想知道如何检测线程内 TButtonedEdit 文本的变化。或者如何使用线程来实现。
感谢您的帮助。
【问题讨论】:
-
数据从何而来?我认为找到您搜索的数据需要一些时间?列表视图是虚拟的(所有者数据)吗?
-
@AndreasRejbrand 应用程序在 Oncreate 事件中从文本文件中读取数据。数据存储在“TArray
数组”中。用于搜索。是的,当有很多项目前。 1000+ 这需要时间 & UI 卡住了。我正在使用 TListView(Win32)。 -
我完全不相信线程是您的解决方案。如果您的列表框不是虚拟的,那么我认为 that 是您的主要问题。使其虚拟化。
-
让主线程将搜索文本写入变量,然后向搜索线程发出信号。使用锁来同步对变量的访问。
-
@AndreasRejbrand 我是德尔福的新手。从未将 TlistView 用作虚拟。我一定会尝试的。感谢您的建议。
标签: multithreading delphi