言語: C#
ランタイム: .NET 4 クライアント
問題: 約 14 分でガベージ コレクションが発生します (診断ツールに表示されます)。この時点で例外がすぐに次の情報と共に続きます。
Test.exe の 0x163BA480 で例外がスローされました: 0xC0000005: 場所 0x163BA480 を実行しているアクセス違反。
私のプログラムは、アドインを介して追加機能を追加する目的で、サード パーティのプログラムを参照しています。
私のプログラムはアセンブリで構成されています:
- .cs ファイルからアドオン アセンブリをコンパイルする私のメイン プログラムは、それらの名前を WPF ウィンドウに表示します。
- 同じソリューションの一部である、ロギングを処理するだけの 2 次プロジェクト。
- 同じソリューションの一部である、アドインの読み込みを担当する追加のプロジェクト。
- 読み込まれたアドオン アセンブリの数。
すべてのアセンブリが同じ Appdomain に読み込まれます。最終的には、各アセンブリが独自の Appdomain 内にあるように変更されます。
この特定のケースでは、アドオン アセンブリは単純なクラス定義であり、他の実行コード/メソッドはありません。
using System;
using Interface;
namespace TestAddin
{
public class TestAddin
{
}
}
出力:
プログラムが正常に実行され、アセンブリが読み込まれ、表示されます。
次に、プログラムはサードパーティのプログラムを実行します (参照された dll の Run() メソッドを介して)
前述の例外が発生するまで、プログラムはさらに約 14 分間正常に実行されます。
これをデバッグする方法がわかりません。例外が発生した場所を知るにはどうすればよいですか? 私が書いた 3 つのプロジェクトはいずれもアンマネージ コードを利用しておらず、参照されているアセンブリは C# で実行されています。dotpeek を使用してアンマネージ コードを見つけることはできませんでした。
さらに情報が必要な場合は、喜んで提供します。