9

を診断して最小化または防止するにはどうすればよいAppDomainUnloadedExceptionですか?

NUnit 2.5.2 はAppDomainUnloadedException、PLINQ を含む長い (10 秒を超える) テストの後、一貫してスローします。

2008 年 7 月にさかのぼると、Stephen Toub は次のように述べています。

はい、CTP のスケジューラはスレッドの中止を適切に処理しません。これにより、シャットダウン中のドメインにライブ スケジューラが存在する場合にプロセスがクラッシュすることがよくあります (AppDomain のシャットダウンにより、そのドメイン内のスタック フレームを持つすべてのスレッドでスレッドが中止されるため)。 )。将来のリリースに向けてこれを強化するために取り組んでいます。

次のような多くの回避策を試しました。

  • 別のメソッドでテストを実行して、浮遊参照を排除する
  • /domain:NoneNUUnit 引数として指定する
  • legacyUnhandledAppDomainPolicy要素を削除するnunit-console.exe.config

パラメトリック テストを高速化するには PLINQ が必要なため、競合状態の可能性を減らすためにNUnit をバックグレードすることはできません。問題のない NUnit のバージョンは、パラメトリック テストをサポートしていません。

4

1 に答える 1

1

MSDNフォーラムのこのPLINQタスクマネージャースレッドによると、問題は解決されているはずです。.NET Frameworkの最新リリースでは、PLINQのタスクマネージャーはAppDomainのアンロード時に正常にシャットダウンします。

.NET 4または4.5でまだこの問題が発生していますか?

于 2011-10-05T20:02:18.687 に答える