0

这是场景:我有一个 dll,它具有从 db 获取数据的方法,具体取决于传递的参数,进行各种检查并为我提供所需的数据。

GetGOS_ForBill(AgencyCode)

在 Windows 应用程序中,我有列出 500 多个机构的列表框。我为每个附加到通用列表的机构检索 GOS。如果用户选择了所有机构(目前为 500+),大约需要 10 分钟。从 dll 返回数据。

我们虽然关于后台处理。但这并没有减少时间,除了用户可以在屏幕上做其他事情。考虑多线程。

有人可以帮我吗?什么是正确的方法,我们如何使用多线程来完成?

4

1 回答 1

4

顺便说一句,我认为您对多线程没有太多经验,多线程不是一个可以即兴创作并通过 Stackoverflow 问题扔掉的话题。如果您不知道自己在做什么,我强烈建议您不要使用多线程……而不是一个问题,您将遇到两个问题。

在您的情况下,性能问题与使用线程来获得并行工作负载无关,而是与正确构造问题有关。

现在,您正在分别查询每个机构,这对几个机构来说工作得很好,但正在迅速退化。查询本身可能很快,问题是您正在运行该查询 500 次。相反,为什么不尝试在单个查询中获取所有机构的所有 GOS(这可能会很快)并将其存储在内存中(比如字典)。然后在需要时检索适当的 GOS 集。

如果最常见的情况是用户只选择其中几个,您总是可以建立一个阈值......如果选择的数字小于 30,则执行每个查询,否则运行一般查询并从内存中检索。

于 2013-01-18T15:33:04.413 回答