【发布时间】:2011-03-22 17:33:58
【问题描述】:
一些用户在尝试通过 office interop 从我们的应用程序启动 Word 时遇到问题:
using Word = Microsoft.Office.Interop.Word;
public void ShowWord()
{
_word = new Word.ApplicationClass();
_word.Visible = true;
_word.Activate();
}
如果 word 未始终打开,则会引发 COM 异常,说明“无法激活应用程序”。在调用_word.Activate() 之前添加Thread.Sleep(1000) 可以防止这种情况,但显然并不理想。
public void ShowWord()
{
_word = new Word.ApplicationClass();
_word.Visible = true;
Thread.Sleep(1000)
_word.Activate();
}
以前有没有人见过这个并且知道是什么原因造成的以及解决这个问题的正确方法是什么?
【问题讨论】:
-
来自 MSDN:
ApplicationClass类支持 .NET Framework 基础结构,不能直接从您的代码中使用。它可能证明与您的问题无关,但您仍然应该停止使用。请改用Application。 -
是的,我也对
ApplicationClass的这种用法感到困惑。这是一段相当古老的代码;我会看看Application看看是否能解决问题。 -
我已将所有内容更改为
Application,但完全没有区别。
标签: c# vsto office-interop