程序是这样的:
一个主程序A可以调用DLL B,
一个DLL C 也可以调用B
B也可以调用C于是当A调用B之后,B中又调用C,C又回头来调用B时就会出现错误。这时候要如何判断B是否已经在运行?
一个主程序A可以调用DLL B,
一个DLL C 也可以调用B
B也可以调用C于是当A调用B之后,B中又调用C,C又回头来调用B时就会出现错误。这时候要如何判断B是否已经在运行?
解决方案 »
- 如何将DBGridEh里的记录导出到excel?
- 这种问问题的方法,这个帖当年怎么就没火起来??(无意中翻出陈年旧历)
- 如何取得dbgrideh的footer之sum所求得的值,急
- 如何设置数据库路径
- 高分求一算法《关于优先的问题》在线 等 待
- DBGrid当记录比较多的时候为什么Append成了Edit?
- 如何在SELECT显示到DBGRID里的同时在DBGRID的最前边自动加了条数?(像EXECL)
- 急!关于dbgrid
- 高分请教:我从自己的一个邮箱向自己的另外一个邮箱发东西所产生的问题。。。
- 我是一个新手,想学习Delphi应该从哪里着手呀。请各位大侠指点。
- 如何在子窗体关闭的同时关闭主窗体
- 为什么不能用form.create(nil)?
B还是使用中怎么能释放呢?
这里面是B和C互相调用的时候才会出错,C是要通过B调用的(当然还有其它地方也可以调用C,只是就这个问题而言),但是C又可以调用B,所以这时候就必须要避免B和C互相调用的情况,从而需要判断B是否已经运行,也就是说判断C是不是通过B调用出来的
另外也可以遍历进程,然后遍历进程加载DLL做判断,不过效率没前者高
我的意思是利用互斥等来让这个DLL只能被一个调用, 控制调用DLL的代码地方或者DLL入口都可以
DELPHI用互斥来防止程序多开的代码,你去找下看下
你的问题可能是循环调用引起的...,先把各个DLL之间的逻辑关系摆顺