Обслуживаемый компонент.Net с обработкой событий
Я пытаюсь сделать вне.NET DLL; используя пример кода, я могу сделать COM DLL вне процесса. Тем не менее, я сталкиваюсь с некоторыми проблемами при реализации обработки событий.
Согласно коду, следующее событие предоставляется компонентом:
Public Event FloatPropertyChanging(ByVal NewValue As Single, ByRef Cancel As Boolean)
Обработка этого события в приложении VB.Net Form вызывает исключение. Ниже приведены подробности:
Dim tempObj As New VBServicedComponent.SimpleObject()
AddHandler tempObj.FloatPropertyChanging, AddressOf FloatPropertyChangingEventHandler // **Throws Exception!!!**
tempObj.FloatProperty = 4
Детали исключения:
System.Reflection.TargetInvocationException:-
Exception has been thrown by the target of an invocation
Трассировки стека:
в System.RuntimeMethodHandle.SerializationInvoke(метод IRuntimeMethodInfo, цель объекта, информация SerializationInfo, StreamingContext& context) в System.Runtime.Serialization.ObjectManager.CompleteISerializableObject(объектный объект, информация о Serialization.Of.bjectSign.OF). Держатель ObjectHolder) в System.Runtime.Serialization.ObjectManager.DoFixups() в System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(обработчик HeaderHandler, __BinaryParser serParser, логический метод fCheck, логический метод SystemCallServiceMearChoperShoperCodeCard) для домена ComponentSerializer.UnmarshalFromBuffer(Byte[] b, Object tp) в System.EnterpriseServices.ComponentServices.ConvertToMessage(String s, Object tp) в System.EnterpriseServices.ServicedComponent.RemoteDispatchHerviceServiceSer.EnterpriseServices.IRemoteDispatch.RemoteDispatchNotAutoDone(String s) в System.EnterpriseServices.IRemoteDispatch.RemoteDispatchNotAutoDone(String s) в System.EnterpriseServices.RemoteServicedComponentProxy.Invoke(мессенджер IMessage.Temp..SimpleObject.add_FloatPropertyChanging(FloatPropertyChangingEventHandler obj) в TestApp.modMain.Main() в D:\Meridia\MeridiaAPI\COMPlusServices\TestApp\Module1.vb: строка 34
Внутреннее исключение:
Could not load file or assembly 'TestApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.":"TestApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Трассировки стека:
на System.Reflection.RuntimeAssembly._nLoad(AssemblyName имя_файла, струнного CodeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, булевой throwOnFileNotFound, Boolean, Boolean forIntrospection suppressSecurityChecks) при System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, булева throwOnFileNotFound, булева forIntrospection, булевы suppressSecurityChecks) при System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, фактические данные assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, булева forIntrospection) при System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) в System.Reflection.Assembly.Load(String assemblyString) в System.Runtime.Serialization.FormatterServices.LoadAssemblyFromString(String assemblyName) в System.Reflection.MemberInfoSerializationHolder..ctor(информация SerializationInfo, контекст StreamingContext)
Есть ли что-то, чего мне не хватает в конце TestApp при обработке события? Если да, что было бы правильно обработать такое событие?
Заранее спасибо.