【发布时间】:2017-10-05 09:27:13
【问题描述】:
背景
我们有一个现有的应用程序,它可以将数据加载到 Microsoft Project 中,以便 MS Project 对其进行操作。
原始应用程序是一个老式的 COM Project 插件,由 VB6 编写,针对 MS Project 2003 / 2007,现在我们计划将它们迁移到针对 MS Project 2013 / 2016 的 VSTO 插件。
问题
对于他们的 COM 插件解决方案,我们遇到了性能问题:
测试项目有4414个活动(av_activity表)和8330个 关系(av_reln 表)。
在加载操作期间报告了性能问题:
上述项目的 MSP 2003 模板的加载时间约为:30-35 分钟。
MSP 2007 和 2010 模板的加载时间 > 3 小时
对于 VSTO 解决方案,它会变得更好,但我们仍然希望可以通过某种方式提高加载性能。
到目前为止我们所做的尝试
我们尝试了几种技巧,但都没有取得太大的效果......
-
添加数据时禁用自动计算
_application.Calculation = PjCalculation.pjManual; -
在添加数据期间禁用屏幕更新
_application.ScreenUpdating = false; -
禁用更改突出显示
_application.EnableChangeHighlighting = false; -
禁用状态栏
_application.DisplayStatusBar = false; 将撤消值设置为 1
- 将默认视图设置为“任务表视图”(而不是“甘特视图”,这会在加载期间产生更多开销)。
寻求帮助
我正在寻求任何解决方案的帮助,以提高性能,同时使用 VSTO 插件和 C# 将数据加载到 MS Project 中。
提前致谢!
【问题讨论】:
-
OP 在下面的评论中指出,当前使用的方法是
TaskDependencies.Add。这种方法非常缓慢。唯一的解决方法是提前构建 Predecessor 列表。详情见我的回答。
标签: c# vsto ms-project