日期:2014-05-19  浏览次数:21031 次

thread中COM 对象强制转换为接口类型错误?急
在一过程中有一段利用sqlxml导入xml到sql   server功能代码:
.
.
.
                        SQLXMLBULKLOADLib.SQLXMLBulkLoadClass   objBL   =   new   SQLXMLBULKLOADLib.SQLXMLBulkLoadClass();
                        objBL.ConnectionString   =   SQLConnectionString;
                        objBL.ErrorLogFile   =   "error.log ";
                        objBL.Execute( "mapping.xml ",   "result.xml ");
                        objBL   =   null;
.
.
.
在另处调用此过程
如果以一般方式调用则执行正常,没有错误,如下
Functions.downRecords(DateTime.Now);

如果采用线程方式调用,抛出错误:
                        Thread   threadDownN   =   new   Thread(new   ParameterizedThreadStart(Functions.downRecords));
                        threadDownN.Start(DateTime.Now);

err:无法将类型为“SQLXMLBULKLOADLib.SQLXMLBulkLoadClass”的   COM   对象强制转换为接口类型“SQLXMLBULKLOADLib.ISQLXMLBulkLoad”。此操作失败的原因是对   IID   为“{1380DD8D-DCB9-4A6E-9D53-EECDDF18DA85}”的接口的   COM   组件调用   QueryInterface   因以下错误而失败:   不支持此接口   (异常来自   HRESULT:0x80004002   (E_NOINTERFACE))。



------解决方案--------------------
就是类型不对了,改成正确的类型。
------解决方案--------------------
Thread threadDownN = new Thread(new ThreadStart(Functions.downRecords));

改成这样试试