从.NET 4.5.2中的单独线程执行DLL方法时抛出COMException

时间:2017-03-08 20:57:45

标签: c# .net multithreading dll comexception

我有一个引用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中这种行为有所不同。

0 个答案:

没有答案