.NET Compact Framework 3.5プロジェクト(Windows Mobile 6で実行)にリソースをロードすると、TargetInvocationExceptionがランダムに発生します。これらは、次のスタックトレースに似ています。
FATAL 2012-11-13 14:17:00,657 [23768895] TargetInvocationException - mobileX.MIP.Post.Presentation.Program
System.Reflection.TargetInvocationException: TargetInvocationException ---> System.Exception: Exception
at Microsoft.AGL.Common.MISC.HandleAr(PAL_ERROR ar)
at System.Drawing.Bitmap._InitFromMemoryStream(MemoryStream mstream)
at System.Drawing.Bitmap..ctor(Stream stream)
at System.Reflection.RuntimeConstructorInfo.InternalInvoke(RuntimeConstructorInfo rtci, BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture, Boolean isBinderDefault, Assembly caller, Boolean verifyAccess, StackCrawlMark& stackMark)
at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.ConstructorInfo.Invoke(Object[] parameters)
at System.Resources.ResourceReader.CreateResource(Type objType, Type[] ctorParamTypes, Object[] ctorParameters)
at System.Resources.ResourceReader.LoadBitmap(Int32 typeIndex)
at System.Resources.ResourceReader.LoadObjectV2(Int32 pos, ResourceTypeCode& typeCode)
at System.Resources.ResourceReader.LoadObject(Int32 pos, ResourceTypeCode& typeCode)
at System.Resources.RuntimeResourceSet.GetObject(String key, Boolean ignoreCase)
at System.Resources.ResourceManager.GetObject(String name, CultureInfo culture)
この例外の理由についての私の推測は、クリーンアップするのを忘れた管理されていないリソースがあるということです。ただし、プロジェクトには多くのフォームとリソースがあります。
だからここに私の質問があります:
- クリーンアップされていないフォームまたはリソースがこの例外の理由である可能性がありますか?
- メモリを浪費する正確なフォームまたはリソースを追跡するにはどうすればよいですか?
2について: .NET Compact Framework PowerToys3.5のCLRProfilerを使用してアプリケーションのプロファイルを作成しました。たくさんのメモリが「NATIVEFUNCTION」/に行きSystem.Windows.Forms.Control::_InternalWnProc Microsoft.AGL.Common.PAL_ERROR (Microsoft.AGL.Forms.WM int32 int32)
ます。ただし、これらのリソースがどこで使用されているかはわかりません。どうすればわかりますか?