2年前,Remy Lebeau 给了我有关 Delphi 线程的宝贵提示。他的回答对我非常有用,我觉得我在他的帮助下取得了很大进展。这篇帖子可以在 这里 找到。
今天,我现在面临一个关于线程的“概念性问题”。这不是关于代码的问题,而是关于应该选择哪种方法来解决某个问题的方法。我知道我们不应该询问个人意见,我只是想知道,在技术角度上,这两种方法中是否必须避免其中一种或者它们都可行。
我的应用程序在数据库中有一个唯一产品编号列表(称为 SKU)。使用这些 SKU 查询 API,我会得到一个包含有关这些产品详情的 JSON 文件。这个 JSON 文件被处理后,结果会显示在屏幕上,并保存在数据库中。因此,在一个步骤中,涉及到一个下载过程,它在一个工作线程中执行。
我看到这整个过程有两种不同的方法:
当用户点击开始按钮时,将发出一个查询,根据用户的条件构建SKU列表。然后构建Tstringlist,并为列表的每个元素启动一个线程,下载JSON,将结果发送回主线程并终止。可以这样描述: 当用户点击开始按钮时,会触发一个查询,根据用户的条件构建SKU列表。不是逐个发送SKU编号到工作线程,而是将整个列表发送,并且工作线程迭代整个列表,发送结果以供显示和保存到主线程(通过同步事件)。因此,我们只有一个工作线程在终止前处理整个列表。
可以这样描述: 我已经编写了这两种不同的方法,它们都可以正常运行...但是我也遇到了一些缺点。
我不是专业开发人员,这只是我的兴趣爱好。在进一步推进“优化”之前,我想知道根据您的知识和经验,在技术上是否应该避免我所描述的方法之一,并说明原因。
感谢您的时间。
Mathias