2

実行時に Func`2<> の MissingMethodExceptions をスローしている WindowsCE 6.0 の .NETCF 3.5 で実行されている C# コードに取り組んでいます。例外が発生するコード部分はランダムです。

奇妙なことに、これは、アプリケーションをしばらく使用していて、Func`2 への呼び出しが確実に多く発生した場合に発生します。(例: IEnumerable.Select() または .Where() 経由) アセンブリ ファイルのサイズの合計が ~18MB を超えるように、アプリケーションの有効期間中に十分な型をロードした場合に、この動作が始まるようです。ただし、デバイスには Type をロードするのに十分なメモリ (RAM) があります。

LoaderLogging も有効にしましたが、役に立ちませんでした。Func`2 の TypeLoad エラーのみが表示されます。

アイデアが尽きたので、このようなエラーの原因は何でしょうか?

残念ながら、1) 私が働いている会社の所有物であり、2) 何万行ものコードであるため、コードを共有することはできません。

4

2 に答える 2

4

.NETCF には制限があるようです:

ジェネリック型宣言ごとに 1024 個の一意の閉じた型しか構築できません。(詳細については、セクション「制限事項」を参照してください: http://blogs.msdn.com/b/romanbat/archive/2005/01/06/348114.aspx )

意味:

List<int> a;
List<int> b;
List<int> c;

1つの「スロット」を取り、

List<int> d;
List<string> e;

2 つの「スロット」(2 つの一意の終了) を取得します。

注意が必要なのは、通常、これにより ArgumentException が発生しますが、.NETCF が代わりに MissingMethodExceptions をスローすることがあります。(「3. スローされる例外の違い」を参照: http://blogs.msdn.com/b/nazimms/archive/2005/01/25/360324.aspx )

可能な場合は独自のデリゲート タイプを使用して Func`2 の使用を減らし、これで問題が解決しました。

于 2012-11-24T10:09:32.690 に答える