vsto: 在异步回调函数中,获取word高级属性时候报异常。
发现主线程去执行获取高级属性正常,但非主线程获取时候报异常
异常如下:
无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“Microsoft.Office.Core.DocumentProperties”。此操作失败的原因是对 IID 为“{2DF8D04D-5BFA-101B-BDE5-00AA0044DE52}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 不支持此接口 (异常来自 HRESULT:0x80004002 (E_NOINTERFACE))。
有谁碰到过类似问题?
异常情况例子:
System.Threading.Thread thread = new System.Threading.Thread(delegate()
{
try
{
var testApp = Globals.ThisAddIn.Application;
var testDoc = testApp.ActiveDocument;
var testproperties = (Microsoft.Office.Core.DocumentProperties)testDoc.CustomDocumentProperties;
}
catch (Exception ex)
{
}
});
thread.Name = "newthread";
thread.Start();
正常情况例子:
try
{
var testApp = Globals.ThisAddIn.Application;
var testDoc = testApp.ActiveDocument;
var testproperties = (Microsoft.Office.Core.DocumentProperties)testDoc.CustomDocumentProperties;
}
catch (Exception ex)
{
}
invoke或迟绑定问题,invoke的方法上面发的那个可以
迟绑定参考 http://support.microsoft.com/kb/303296/en-us http://www.cnblogs.com/2018/category/249767.html
谢了!我先尝试一下
@xiongweidotnet:
困扰了好久,原来在非主线程下不能强制转化,但原始的dynamic可以直接用
var testproperties = (Microsoft.Office.Core.DocumentProperties)testDoc.CustomDocumentProperties; //这句话有问题,无需强制转化
还是谢谢各位!!