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

时间:2011-05-17 12:08:49

标签: wpf multithreading performance excel

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

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

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

您需要考虑以下几点:

  • COM API可能会启动Excel进程。启动流程并等待它准备就绪需要时间。
  • 可能存在进程边界交叉,这比进程内的东西慢。
  • 您可能陷入了在代码中创建的COM对象的线程关联陷阱。它们可能与它们创建的线程具有亲缘关系,这意味着即使您在另一个线程上使用COM对象,该代码的实际运行也会被编组回到该对象的拥有线程。但是,这应该是显而易见的,因为如果代码足够密集,您的UI将会断断续续。

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