无
无业游民
Unregistered / Unconfirmed
GUEST, unregistred user!
我最近在一个系统中这样使用Interface:
1、ICustomAddin 接口名称
2、TCustomAddin 继承自TInterfaceObject,并实现了ICustomAddin接口
3、在DLL中使用一个函数返回该接口
4、主程序中会用动态调用DLL,取得接口后调用接口的方法进行工作,有下列几种使用情况:
4.1、在一个过程中取得接口并赋值给局域变量,使用完后赋值为nil——释放。
4.2、在一个线程中取得接口并赋值给线程属性变量,使用完后赋值为nil——释放。然后线程结束。主线程会使用该线程取得的接口进行操作(设置Addin终止标记)
现在的问题是:
4.1能够正确执行,多次执行都没有问题!但是4.2执行到退出线程处理函数时发生错误( EAccessViolation),错误发生在_IntfClear调用中。注意,并不是退出Execute而是Execute中的一个方法,这个方法使用了接口。
请教各位富翁帮助选找问题,多谢!
说明:
在这个多线程系统中不存在线程安全和访问冲突问题,对这一点我有充分的信心!
1、ICustomAddin 接口名称
2、TCustomAddin 继承自TInterfaceObject,并实现了ICustomAddin接口
3、在DLL中使用一个函数返回该接口
4、主程序中会用动态调用DLL,取得接口后调用接口的方法进行工作,有下列几种使用情况:
4.1、在一个过程中取得接口并赋值给局域变量,使用完后赋值为nil——释放。
4.2、在一个线程中取得接口并赋值给线程属性变量,使用完后赋值为nil——释放。然后线程结束。主线程会使用该线程取得的接口进行操作(设置Addin终止标记)
现在的问题是:
4.1能够正确执行,多次执行都没有问题!但是4.2执行到退出线程处理函数时发生错误( EAccessViolation),错误发生在_IntfClear调用中。注意,并不是退出Execute而是Execute中的一个方法,这个方法使用了接口。
请教各位富翁帮助选找问题,多谢!
说明:
在这个多线程系统中不存在线程安全和访问冲突问题,对这一点我有充分的信心!