VSTO文档级自定义线程

时间:2015-07-07 07:08:38

标签: c# multithreading ms-word vsto

我们正在为MS word开发VSTO文档级自定义。我们需要从后台线程访问该文档,以便我们不会停止刷新UI。

这适用于DocumentBase上的Sections / Table等属性。

尝试访问CustomDocumentProperties或BuiltInDocumentProperties时,收到以下异常

if (!exists("A") & exists("B")) {
    C= B
} else if (exists("A") & !exists("B")) {
    C= A
} else if (exists("A") & exists("B")) {
    C= rbind(B,A)
} else {C <- NULL}

是否可以从后台线程访问这些属性?

由于

1 个答案:

答案 0 :(得分:1)

首先,您不应该从后台线程访问Office对象模型,因为Office应用程序使用单线程单元模型。

使用后期绑定技术访问文档属性,有关详细信息,请参阅Type.InvokeMember方法。例如:

object properties = workBk.GetType().InvokeMember("CustomDocumentProperties", BindingFlags.Default | BindingFlags.GetProperty, null, workBk, null);

object property = properties.GetType().InvokeMember("Item", BindingFlags.Default | BindingFlags.GetProperty, null, properties, new object[] { propertyIndex });

object propertyValue = property.GetType().InvokeMember("Value", BindingFlags.Default | BindingFlags.GetProperty, null, propertyWrapper.Object, null);

您也可以看一下类似的页面:

Set custom document properties with Word interop

Accessing Excel Custom Document Properties programatically