Tag: apartments

C#在线程之间编组COM对象

我对C#marshal在线程之间是否有COM对象感到非常困惑。 为此,我有一个应用程序,它以任务并行方式加载一组文件。 我正在使用StaTaskScehduler使用COM对象加载文件。 加载COM对象后,我将对象存储在中央列表中。 然后,我再次使用STATaskScheduler尝试对此数据执行一些处理。 但是在这一点上我遇到了一个问题。 我收到如下例外情况: An unhandled exception of type ‘System.Runtime.InteropServices.InvalidComObjectException’ occurred in MadCat.exe Additional information: COM object that has been separated from its underlying RCW cannot be used 现在我的理解是我收到此错误,因为该对象尚未编组到新线程中。 我以为这是C#为你做的事情? 如何在一个线程中创建一个公寓线程COM对象,然后从另一个线程使用它? 我在这里吠叫错了吗? 我甚至不能使用Sta公寓作为我的主题吗? 我可以保证对象永远不会同时从多个线程访问。 任何想法都非常感激。 编辑 :COM对象定义如下: [ coclass, threading( apartment ), vi_progid( [Namespace.Class] ), progid( [Namespace.Class].6 ), version( 6.0 ), uuid( […]