在基于 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 和用户来说,太多的数据正在扼杀数据。只获取正确显示所需的内容。
我是 Delphi 开发的初学者。我想制作包含 Sqlite 数据库和浏览器的桌面应用程序。该应用程序主要基于 CRUD 操作,但是当用户将数据更新到数据库时,更改将显示在应用程序另一个面板的浏览器上。它还生成可打印的 pdf。 pdf由C#代码[NReco Library]生成。在这种情况下,我是否必须在我的应用程序中使用多线程才能使我的 ui 响应。
可能没有必要,但在单独的线程上 运行 长时间 运行ning 任务总是一个好主意。 Delphi 使这变得非常简单,因此不必担心。
或者,您可以使用定期调用 Application.ProcessMessages() 等技术来保持您的 UI 响应。
SQlite3 的响应时间很短。一个简单的SELECT实际上不到几微秒,因为它是一个嵌入式数据库,不涉及网络层。
无需使用 SQLite3 实现后台线程。
对于要求较高的内容,例如阅读大量数据,您可以:
- 使用适当的分页(例如每次读取10K行);
- 时不时给
Application.ProcessMessage
打电话; - 在循环中添加超时。
您应该像设计客户端应用程序一样设计您的应用程序。对于 UI 和用户来说,太多的数据正在扼杀数据。只获取正确显示所需的内容。