我正在尝试使用 COM 互操作将托管插件写入非托管主机应用程序。尽管没有使用 COM(没有注册表等),但非托管插件接口都与 COM 兼容。我已经走了很长一段路要让它发挥作用,我只想改变一件事。
从非托管主机应用程序到托管插件程序集的调用都是在 STA-(托管)线程上进行的。我希望它是 MTA,因此没有同步/泵送开销。
我找不到实现这一目标的方法。
任何帮助或建议都是最受赞赏的。
编辑:这不是常见的 COM 互操作方案:主机不是 COM,没有人调用 CoInitialize/CoCreateInstance 等。似乎 CLR 确实将单元分配给调用托管插件的非托管线程。这就是我想要改变的(它现在默认为 STA 而不是 MTA)。
我提出的相关问题可能会提供更多上下文: Interop COM(-isch) interface marshaling results in AccessViotlationException on simple call Returned managed object method not called from C++ in COM interop