J
jettop
Unregistered / Unconfirmed
GUEST, unregistred user!
我建立了一个类:TMyClass ,TMyClass有ADO连接和系统的参数信息和一些事件和方法,在调DLL窗体时通过传入这个类,目的能让所有DLL窗体可以共享连接和系统的所有参数,也能让DLL能操作EXE的一些事件和方法.同时EXE也会对TMyClass进行操作,如参数赋值和事件实现等。当某个DLL打开后,若有对TMyClass的字符型属性有写操作时,当它关闭后,EXE再访问TMyClass的字符型属性时这个属性就不存在了,而引发异常。
字符型属性是PChar型,也试过用String型(有Uses ShareMem.pas)这个现象不会了。当是事件属性时,DLL关闭后还是释放了事件指针,当EXE再触发这个事件时,就象PChar属性一样,引发指针被释放的异常。
注:有用自定义内存管理器处理,但事件指针还是被释放了,EXE再放问此事件时也是发生异常。
请问:
1、我这种EXE与DLL共用一个类实例,以达到DLL与EXE互动的系统组织模式是否科学?
2、如何让DLL释放后,不会释放我在EXE中的类实例?
3、对指针型属性和事件,DLL有写或访问后,它们就会被跟随释放,而其它类型(如整数型)的就不会,为什么?
字符型属性是PChar型,也试过用String型(有Uses ShareMem.pas)这个现象不会了。当是事件属性时,DLL关闭后还是释放了事件指针,当EXE再触发这个事件时,就象PChar属性一样,引发指针被释放的异常。
注:有用自定义内存管理器处理,但事件指针还是被释放了,EXE再放问此事件时也是发生异常。
请问:
1、我这种EXE与DLL共用一个类实例,以达到DLL与EXE互动的系统组织模式是否科学?
2、如何让DLL释放后,不会释放我在EXE中的类实例?
3、对指针型属性和事件,DLL有写或访问后,它们就会被跟随释放,而其它类型(如整数型)的就不会,为什么?