bri*_*ler 3 c# vsto office-interop
尝试通过Office互操作从我们的应用程序启动Word时,一些用户遇到了一个问题:
using Word = Microsoft.Office.Interop.Word;
public void ShowWord()
{
_word = new Word.ApplicationClass();
_word.Visible = true;
_word.Activate();
}
Run Code Online (Sandbox Code Playgroud)
如果word不能总是打开,则会引发COM异常,指出“无法激活应用程序”。Thread.Sleep(1000)在调用之前添加一个pre _word.Activate()可以防止这种情况,但显然并不理想。
public void ShowWord()
{
_word = new Word.ApplicationClass();
_word.Visible = true;
Thread.Sleep(1000)
_word.Activate();
}
Run Code Online (Sandbox Code Playgroud)
有没有人以前见过这个,并且知道是什么原因造成的,以及解决这个问题的正确方法是什么?
我们遇到了类似的问题,似乎Word正在异步等待操作系统显示其窗口。我们解决此问题的方法是等待Visible属性返回true:
public void ShowWord()
{
_word = new Word.Application();
_word.Visible = true;
System.Diagnostics.Stopwatch sw = System.Diagnostics.Stopwatch.StartNew();
while (!_word.Visible && sw.ElapsedMilliseconds < 10000)
{ /* Just Wait!! (at most 10s) */}
_word.Activate();
}
Run Code Online (Sandbox Code Playgroud)
希望这对某人有帮助。
| 归档时间: |
|
| 查看次数: |
4829 次 |
| 最近记录: |