C# VSTO Word加载项:MessageBox定时问题

C# VSTO Word加载项:MessageBox定时问题,c#,ms-word,vsto,C#,Ms Word,Vsto,嗨 我正在开发一个VSTO Word插件,它可以帮助用户替换给定文本中的某些单词。一个对话框引导用户完成替换。 现在,当用户替换最后一个单词时,我想显示一个提示,表示他已完成。我正为一个时间问题苦苦挣扎。消息框出现在最后一次替换可见之前。尽管如此,替换的代码行还是在之前执行的。单击消息框后,按原样进行替换 下面是我用来替换这个词的一行: 使用Microsoft.Office.Interop.Word; ... Words wordsText=Globals.ThisAddIn.Applicati

我正在开发一个VSTO Word插件,它可以帮助用户替换给定文本中的某些单词。一个对话框引导用户完成替换。 现在,当用户替换最后一个单词时,我想显示一个提示,表示他已完成。我正为一个时间问题苦苦挣扎。消息框出现在最后一次替换可见之前。尽管如此,替换的代码行还是在之前执行的。单击消息框后,按原样进行替换

下面是我用来替换这个词的一行:

使用Microsoft.Office.Interop.Word;
...
Words wordsText=Globals.ThisAddIn.Application.ActiveDocument.Words;
...
wordsText[wordPos].Text=“[some Text]”;
这是稍后显示的我的消息框:

MessageBox.Show(该.u所有者,“[you's done text]”,“[title]”,MessageBoxButtons.OK,MessageBoxIcon.Information);

我注意到,如果我在VisualStudio中的上面一行上设置了断点,那么在MessageBox出现之前就会正确地进行替换。我是否可以强制Microsoft.Office.Interop.Word.Word中的更改立即生效?还有其他想法吗?

我没有真正的解决方案,只有一些想法:

  • 也许你可以只做
    System.Windows.Forms.Application.DoEvents()
  • 或者创建一个新文档,再次删除它以强制Winword更新
    Application.ActiveDocument.Words
希望有帮助,
Jörg

您是否在线程上运行任务?我无法复制这个,对我来说很好。也许您可以在运行循环的地方发布完整的代码
wordPos