我已经成功地将 firefox/xulrunner 嵌入到我们的 c# 应用程序中,但它并非没有问题。偶尔会抛出一个 AccessViolationException,我认为这是由 GC 在内存中移动托管对象和非托管 xpcom 在移动后尝试使用它引起的。例如,我为自定义协议创建了一个协议处理程序,该协议实现了一些 firefox/xulrunner 调用的接口。在这样做之后,AccessViolationException 变得更加占主导地位。我将 GCHandle.Alloc(object, GCHandleType.Pinned) 作为一种可能的解决方案进行了研究,但找不到足够的信息来说明如何编写自定义编组器以使我的类实现了“blittable”接口。那么有没有人对如何处理这个问题或如何将我的课程翻译成“blittable”课程有任何想法?此外,几乎不可能追踪互操作的哪些部分导致了 AccessViolationException。呃:-(
感谢您的任何见解!