Отладка COMException - PullRequest
       18

Отладка COMException

2 голосов
/ 23 января 2009

Я использую древнюю библиотеку маршрутизации Intergraph, чтобы выполнить некоторую маршрутизацию.

Я мог бы отлично создать несколько объектов ActiveX и COM, но есть один тип "Location" и "LocationCtrl", который генерирует исключение COMEx при создании.

Вот соответствующий код

_sourceLocation.Streets = _streets;
_sourceLocation.VerifyAutomatic = fa_sourceLocationse;
_sourceLocation.VerifyType = VerifyTypeConstants.VerifyUsingA_sourceLocation_sourceLocation;
_sourceLocation.ReplaceTextAfterParse = true;
_sourceLocation.ReplaceTextAfterVerify = true;
_sourceLocation.Map = _mapOcx;

COMException было выброшено при установке свойства Streets.

Вот исключение:

System.Runtime.InteropServices.COMException was unhandled
  Message="Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))"
  Source="mscorlib"
  ErrorCode=-2147418113
  StackTrace:
       at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
       at Intergraph.LocationCtrlClass.set_Streets(Object )
       at ECNavigator.Routing.<InitializeRouting>b__0(LocationCtrl l) in C:\Users\Chakrit\Projects\NavigatorService\Experimental\Routing.cs:line 92
       at ECNavigator.Util.FrameworkExtensions.ForEach[T](IEnumerable`1 enum, Action`1 action) in C:\Users\Chakrit\Projects\NavigatorService\Experimental\Util\FrameworkExtensions.cs:line 18
       at ECNavigator.Routing.InitializeRouting() in C:\Users\Chakrit\Projects\NavigatorService\Experimental\Routing.cs:line 90
       at ECNavigator.Routing..ctor(String mapFile, LocationCtrl sourceLocation, LocationCtrl destinationLocation) in C:\Users\Chakrit\Projects\NavigatorService\Experimental\Routing.cs:line 62
       at ECNavigator.Program.Main() in C:\Users\Chakrit\Projects\NavigatorService\Experimental\Program.cs:line 23
       at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: 

Все приложение чрезвычайно простое, оно содержало только код, который инициализирует некоторые вспомогательные объекты, однако этот конкретный тип Location мог бы инициализироваться очень хорошо, но при первом вызове методов получения / установки свойств он вызывал бы указанное выше исключение.

Я отлаживал это уже несколько дней и не нашел способа правильно создать и инициализировать класс Location.

Есть подсказка? Некоторые указания о том, как продолжить это расследование?

...