以下是该方案: 我有一个dll,它有从db获取数据的方法,取决于传递的参数,进行各种检查并给我所需的数据。
GetGOS_ForBill(AgencyCode)
在Windows应用程序中,我有列出500个代理商的列表框。 我检索每个代理商的GOS附加到通用列表。 如果用户选择了所有代理商(现在为500 +),则大约需要10分钟。从dll返回数据。
我们关于后台处理。但这不会减少时间,除了用户在屏幕上做其他事情。考虑多线程。
有人可以帮我这个吗?什么是正确的方法,我们如何通过多线程完成?
答案 0 :(得分:4)
顺便问一下,我认为你对多线程没有多少经验,多线程不是一个只是通过Stackoverflow问题被即兴发送掉的话题。如果你不知道你在做什么,我会强烈反对使用多线程...而不是一个问题,你将有两个。
在您的情况下,性能问题与使用线程获取并行工作负载无关,而是正确构建问题。
现在,您正在分别查询每个代理机构,这对于几家代理商来说都很好,但很快就会降级。查询本身可能很快,问题是你运行该查询500次。而不是为什么你不试图在一个查询中获得所有代理商的所有GOS(这可能会很快)并将其存储在内存中(比如词典)。然后在需要时检索适当的GOS集。
如果最常见的情况是用户只选择其中几个,则可以始终建立阈值...如果所选数字小于,例如30,则执行每个查询,否则运行常规查询并从内存中检索