4

言語: C#

ランタイム: .NET 4 クライアント

問題: 約 14 分でガベージ コレクションが発生します (診断ツールに表示されます)。この時点で例外がすぐに次の情報と共に続きます。

Test.exe の 0x163BA480 で例外がスローされました: 0xC0000005: 場所 0x163BA480 を実行しているアクセス違反。

私のプログラムは、アドインを介して追加機能を追加する目的で、サード パーティのプログラムを参照しています。

私のプログラムはアセンブリで構成されています:

  1. .cs ファイルからアドオン アセンブリをコンパイルする私のメイン プログラムは、それらの名前を WPF ウィンドウに表示します。
  2. 同じソリューションの一部である、ロギングを処理するだけの 2 次プロジェクト。
  3. 同じソリューションの一部である、アドインの読み込みを担当する追加のプロジェクト。
  4. 読み込まれたアドオン アセンブリの数。

すべてのアセンブリが同じ Appdomain に読み込まれます。最終的には、各アセンブリが独自の Appdomain 内にあるように変更されます。

この特定のケースでは、アドオン アセンブリは単純なクラス定義であり、他の実行コード/メソッドはありません。

using System;
using Interface;
namespace TestAddin
{
    public class TestAddin
    {
    }
}

出力:

プログラムが正常に実行され、アセンブリが読み込まれ、表示されます。

次に、プログラムはサードパーティのプログラムを実行します (参照された dll の Run() メソッドを介して)

前述の例外が発生するまで、プログラムはさらに約 14 分間正常に実行されます。

これをデバッグする方法がわかりません。例外が発生した場所を知るにはどうすればよいですか? 私が書いた 3 つのプロジェクトはいずれもアンマネージ コードを利用しておらず、参照されているアセンブリは C# で実行されています。dotpeek を使用してアンマネージ コードを見つけることはできませんでした。

さらに情報が必要な場合は、喜んで提供します。

4

0 に答える 0