我有一个引用XpdfPrint.dll
的.NET服务,用于打印。 XpdfPrint库的打印方法在单独的线程中执行,如下所示:
Thread xPdfPrintThread = new Thread(() =>
{
try
{
xPDF.printPDF4();
}
catch (COMException e)
{
// check for the specific errorcode and log an error
}
});
这很好用,直到我将目标框架从.NET 3.5更改为.NET 4.5.2。现在,对printPDF4()
的调用失败了:
Exception: Error HRESULT E_FAIL has returned from a call to a COM component.
如果我从线程中取出调用并执行它,它就完成了。任何关于为什么将.NET升级到4.5.2的想法会破坏这个?
更新: 在线程内而不是在线程外部实例化COM对象可以解决问题。我仍然不知道为什么在.NET 4.5.2中这种行为有所不同。