ほとんどの場合、firefox/xulrunner を C# アプリケーションに正常に埋め込むことができましたが、問題がないわけではありません。まれに AccessViolationException がスローされます。これは、GC がメモリ内のマネージド オブジェクトを移動し、アンマネージド xpcom が移動後にそれを使用しようとしたことが原因であると考えられます。たとえば、firefox/xulrunner が呼び出すいくつかのインターフェイスを実装するカスタム プロトコル用のプロトコル ハンドラを作成しました。それを行った後、AccessViolationException がはるかに優勢になりました。考えられる解決策として GCHandle.Alloc(object, GCHandleType.Pinned) を調べましたが、カスタム マーシャラーを記述してインターフェイスを実装するクラスを "blittable" にする方法に関する十分な情報が見つかりませんでした。それで、この問題に対処する方法や、私のクラスを「ブリット可能な」クラスに変換する方法について、誰かアイデアがありますか? また、相互運用のどの部分が AccessViolationException を引き起こしているのかを追跡することはほぼ不可能です。うーん:-(
洞察をありがとう!