Microsoft.Office.Interop.Word.Document - 对此对象的COM调用是异步还是同步?

时间:2013-10-16 22:05:56

标签: c# .net com

我试图从我的.NET C#应用程序启动的单词实例中提取RTF代码。执行此操作的代码是:

Clipboard.Clear();
//document is of type Microsoft.Office.Interop.Word.Document
document.Application.Activate();
document.Select();
document.Content.Copy();

if (Clipboard.ContainsData(DataFormats.Text) && 
    Clipboard.ContainsData(DataFormats.Rtf))
{
    DocumentContent = Clipboard.GetText(TextDataFormat.Rtf);
}
Clipboard.Clear();

定期发生的是当调用Clipboard.GetText时,它返回String.Empty。所以我想知道是否有可能对Content.Copy的COM调用尚未完成。我怀疑这是因为如果我在DocumnetContent = ...上放置一个断点并且它返回为String.Empty我可以将调试器移回一行并再次调用GetText行,这次它将包含文本。类似地,如果它返回String.Empty,我可以进入记事本并点击控制+ V,它将粘贴我希望在剪贴板上的复制文本。

我必须强调这种行为并不一致。我无法随意重现它,但如果我执行足够的动作(通常20个中的1个将触发此行为),我最终会得到它。

感谢您的帮助,请告知我们所需的任何澄清。

0 个答案:

没有答案