Я извиняюсь за смутную тему, но я неопытен в этой области и не могу придумать что-то более конкретное.
Я отлаживаю стороннее приложение (написанное на VC ++ 2005), котороезагружает COM плагины.Мой плагин был написан на C # 4.0.Когда вызывается определенный метод в моем плагине, приложение вылетает, но дает мне довольно бесполезный стек вызовов:
151f0d2d()
clr.dll!_COMToCLRDispatchHelper@28() + 0x28 bytes
clr.dll!BaseWrapper<Stub *,FunctionBase<Stub *,&DoNothing<Stub *>,&StubRelease<Stub>,2>,0,&CompareDefault<Stub *>,2>::~BaseWrapper<Stub *,FunctionBase<Stub *,&DoNothing<Stub *>,&StubRelease<Stub>,2>,0,&CompareDefault<Stub *>,2>() + 0x175b8b bytes
clr.dll!COMToCLRWorkerBody() + 0x80 bytes
clr.dll!COMToCLRWorkerDebuggerWrapper() + 0x34 bytes
clr.dll!_COMToCLRWorker@8() + 0x12b bytes
Все, что я думаю, это говорит мне о том, что есть проблема, связанная с CCW.Метод, который приложение должно вызывать в моем плагине в момент сбоя, также фактически не вызывается.Я изменил свой плагин, чтобы немедленно выдать NotImplementedException, и он не выброшен.Однако, если я изменю другой метод в том же интерфейсе , чтобы вызвать исключение NotImplementedException, приложение действительно сообщит об этой ошибке правильно.