1

我正在使用 SDK v 3.0,特别是使用 QBPOSXMLRPLib 在 vb.net 中为 Quickbooks POS(版本 9)编写一些简单的程序。该程序的一部分需要为所有库存项目创建一个 ItemInventoryQueryReq。接收全部 150,000 种产品的信息大约需要 3 分钟左右。该程序不会对 QBPOS 服务器 cpu 造成重大压力,也不会压倒我们的千兆网络,所以我想也许我们可以通过使程序多线程来使其运行得更快,也许可以按部门拆分查询并运行多个查询请求同时进行。这是我第一次使用多线程,但我想我最终弄明白了——主要是。

为了进行测试,我制作了一些程序,可以获取两个部门的所有信息,每个部门大约有 16,000 种产品。所有程序都有两个 System.Threading.Thread - thread1 和 thread2。Thread1 从一个部门获取项目,thread2 从另一个部门获取项目。每个线程都有自己的 QB RequestProcessor。

第一个程序同时运行 thread1 和 thread2。

Thread1.Start()  
Thread2.Start()  
Thread1.Join()  
Thread2.Join()

第二个程序先运行thread1,然后运行thread2。

Thread1.Start()  
Thread1.Join()  
Thread2.Start()  
Thread2.Join()

每个程序运行大约需要 45 秒 - 导致每秒的项目数量与原始程序大致相同(在约 200 多秒内约 150,000 个)。

所以我认为线程没有效果​​。但是一时兴起,我做了第三个只运行线程 1 的程序和一个只运行线程 2 的第四个程序。当我同时运行第三个和第四个程序时,两个程序都在大约 23 秒内完成,有效地使每个程序的项目数增加了一倍第二次收到。如何使用线程获得同样的速度提升?

为什么两个独立的程序同时运行比一个有两个线程的程序快?我做的线程不正确吗?或者这是否与 QBPOS 服务器处理来自不同程序和不同线程的查询的方式更具体有关?如果是这样,有什么办法可以欺骗 QBPOS 服务器更快地运行?

任何帮助将不胜感激。

4

0 回答 0