我做了个自动化型的COM,里面封装了些东西,其中就有一个连接socket。现在不同的应用程序调用此COM,我的目标:
A:要么此COM只有唯一的实例,并可将事件分发给各自的应用程序
B:如果A不能满足,则退而求次:保证COM的唯一实例,只有第一个调用此COM的程序能运行,其他调用此COM的程序则不让运行那位大大知道解决方法不?
A:要么此COM只有唯一的实例,并可将事件分发给各自的应用程序
B:如果A不能满足,则退而求次:保证COM的唯一实例,只有第一个调用此COM的程序能运行,其他调用此COM的程序则不让运行那位大大知道解决方法不?
我上次做了个,想在COM里用ado,结果编译都通过了,应用到程序时就发生错误。
也要选择一下合适的实例模式和线程模式。。具体做法可以查资料,多自己思考一点。
现在不头痛了
不是因为解决这个问题,而是我不用COM了:)正如有句广告词:不用COM,背了不痛了!脚也不抽筋了!
*_^
运行时先调用GETACTIVEOBJECT(),看获取的接口是否为NIL,是说明已经有实例在运行,否则创建
COM实例.
我也有些问题,请高手解答.
http://expert.csdn.net/Expert/topic/2394/2394876.xml?temp=.3526575
1:COM要是采用进程内自动化,实现只有一个实例的情况下配发事件,由于进程间调用的限制,传统方式是很难的,我听说过一种能欺骗进程获取实例地址的方式,不过没有实现过。但,COM做成进程外自动化,是可以完全满足要求的。自动化中增加多点接收事件,调用端实现接收器类,还是可行的。不过看上去不太优美。不知道大大们还有没有更好的建议。
2:由于自动化对象中不能重载Create,而自动化对象是一定要创建的,故我决定强在创建自动化对象之前下手。我想到了一种解决方法,就是很土。在进程内自动化中,再增加一个自动化接口,此接口中引出方法Init(),无非做的就是在里面产生一个Mutex.先检测有没有Mutex,有,好返回失败,调用此COM的程序自觉中止下步操作,没有Mutex,产生并继续执行。这种方式增加了判断步骤,并且调用者不按规矩调用,那就好看啦。当然还可以使用其他的进程间通讯方式来实现。
大大们有没有别的好的思路呢?指教!