(Windows Mobile 6에서 실행되는) .NET Compact Framework 3.5 프로젝트에서 리소스를로드 할 때 임의로 TargetInvocationException이 발생합니다. 그들은이 스택 트레이스 유사 :이 예외의 이유TargetInvocationException : Microsoft.AGL.Common.MISC.HandleAr (PAL_ERROR ar)
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)
내 생각 엔 내가 청소하는 것을 잊었다 일부 관리되지 않는 자원이 있다는 것입니다. 그러나 프로젝트에 많은 Forms와 Resources가 있습니다.
- 이 정리되지 않은 양식이나 자원이 예외에 대한 이유가 될 수 없습니다 :
그래서 여기 내 질문입니까?
- 내 메모리를 낭비하는 정확한 양식이나 자원을 어떻게 추적 할 수 있습니까? 2에 관한
: 나는 이미 .NET Compact Framework에서 전원 완구 3.5에서 CLR 프로파일 내 응용 프로그램을 프로파일 링. 많은 메모리가 "기본 기능"/ System.Windows.Forms.Control::_InternalWnProc Microsoft.AGL.Common.PAL_ERROR (Microsoft.AGL.Forms.WM int32 int32)
으로 이동합니다. 그러나 이러한 리소스가 사용되는 위치를 볼 수 없습니다. 어떻게 알 수 있습니까?
감사합니다. 앨런. 응용 프로그램은 Windows Mobile 6에서 실행됩니다. 일부 양식에서는 Dispose()가 호출되지 않는 별자리가 있습니다. Form의 생성 된 코드의 일부인 구성 요소에서 Dispose()를 호출해야하는지 알고 있습니까?나는 생각하지 않는다. 그러나 단지 확신하고 싶어한다 ;-) – Bob
어이, 모든 자식 컨트롤에 dispose를 호출하지 않고도 괜찮을 것이다.이 머신에는 반사경이 없다. 그러나 Form의 기본 구현은 모든 것을 처리한다고 생각한다. 자식 컨트롤. 내가했던 빠른 테스트. 하위 컨트롤은 Components 컬렉션에 유지되지 않고 ** 타이머와 같은 구성 요소 만이 거기에 보관됩니다. 필자가 보았던 한 가지 실수는 디자이너 파일에 && (components! = null) 처분 문을 기본으로 브러시에 명시적인 .Dispose 호출을 추가하는 것입니다. 컨트롤이없는 구성 요소가 없으면이 컬렉션이 null 일 때가 지 대부분 실행되지 않습니다. – Alan