在基于 SQLite 的 Delphi 应用程序中使用线程是必要的吗?

Is threading is necessary to use in SQLite based Delphi app?

我是 Delphi 开发的初学者。我想制作包含 Sqlite 数据库和浏览器的桌面应用程序。该应用程序主要基于 CRUD 操作,但是当用户将数据更新到数据库时,更改将显示在应用程序另一个面板的浏览器上。它还生成可打印的 pdf。 pdf由C#代码[NReco Library]生成。在这种情况下,我是否必须在我的应用程序中使用多线程才能使我的 ui 响应。

可能没有必要,但在单独的线程上 运行 长时间 运行ning 任务总是一个好主意。 Delphi 使这变得非常简单,因此不必担心。

或者,您可以使用定期调用 Application.ProcessMessages() 等技术来保持您的 UI 响应。

SQlite3 的响应时间很短。一个简单的SELECT实际上不到几微秒,因为它是一个嵌入式数据库,不涉及网络层。

无需使用 SQLite3 实现后台线程。

对于要求较高的内容,例如阅读大量数据,您可以:

  • 使用适当的分页(例如每次读取10K行);
  • 时不时给Application.ProcessMessage打电话;
  • 在循环中添加超时。

您应该像设计客户端应用程序一样设计您的应用程序。对于 UI 和用户来说,太多的数据正在扼杀数据。只获取正确显示所需的内容。