在单独的线程上从Excel读取WPF应用程序的性能较差

我在我的项目中使用Excel COM API读取和写入Excel 2003中的一些代码。 现在这段代码从两个地方被调用:
1.在Excel加载项本身内,在同一个线程上。
2.从一个WPF应用程序,在一个单独的线程上调用WPF窗口。

问题是,当WPF应用程序调用代码时,从Excel中读取10秒的正常操作需要2分钟。 我想这是因为从一个新的线程调用,但我不是100%肯定。

有任何想法吗?

你有很多事情要考虑:

  • COM API可能启动Excel进程。 启动过程需要时间,并等待它准备就绪。
  • 有可能跨越过程边界,这比进程内的东西慢。
  • 您可能陷入了您在代码中创build的COM对象的线程关联陷阱。 它们可能与它们在其上创build的线程有亲和力,这意味着即使您在另一个线程上使用COM对象,该代码的实际运行也会被编组回到对象的拥有线程中。 然而,这应该是显而易见的,因为如果代码足够密集的话,你的UI会口吃。

对不起,这不是一个直接的答案,但它提供了一些探索点。