【发布时间】:2011-05-18 21:21:06
【问题描述】:
我的项目中有一些代码使用 Excel COM API 读取和写入 Excel 2003。现在这段代码从两个地方调用:
1. 从 Excel 加载项本身,在同一个线程上。
2. 从 WPF 应用程序,其中 WPF 窗口在单独的线程上调用。
问题是,当 WPF 应用程序调用代码时,从 Excel 读取应该需要 10 秒的正常操作需要 2 分钟。我认为这是因为来自新线程的调用,但我不是 100% 确定。
有什么想法吗?
【问题讨论】:
-
我认为 10 秒目标是基于 Excel 中运行的代码? WPF COM 调用可能必须启动 Excel 进程。您是否尝试过已经运行的进程?
-
你是对的。 10 秒目标基于 Excel 中的代码。但即使通过 WPF,Excel 也始终处于打开状态,并且在该实例上调用代码。 Excel COM API 在活动实例上工作,因为我们不需要在任何地方提供 Excel 文件的名称。
-
当时我唯一可以建议的就是两个进程之间存在闲聊。所有数据都需要跨流程边界进行编组,并从托管到非托管进行编组。喋喋不休会加剧这种情况。如果不是很健谈,那么我不确定性能问题出在哪里。
标签: wpf multithreading performance excel