是三层高手的,您就进!十万火急,救命呀!!!!!
中间层系统:windows 2000
客户端系统:windwos 2000
本人现正编写一个三层程序.使用DCOM方式.
中间层的主要功能就是根据客户端的请求,调用中间层上的外挂DLL程序完成操作.
客户端有多个,可以同时并发调用中间层.
具体流程就是:
客户端A调用中间层COM,并激发中间层COM的方法FUNC,由中间层方法FUNC调用外挂DLL程序,DLL程序实现与数据服务器SERVER进行多线程的SOCKET通讯.通讯完毕以后,DLL程序自动退出.
客户端有多个,不定时调用,因此就可以出现两个以上的客户端同时调用.
对于DCOM来说,可以支持多用户同时调用.
现在关键就是在DCOM调用外挂程序DLL是出现问题.
由于WINDOWS只是在内存做一个DLL的映射.
当第一个客户端激发中间层调用DLL程序时,SOCKET通讯正常.
如果此时第二个客户端又激发中间层调用DLL程序时,又激发新的SOCKET通讯.
也就是两个DLL并行运行.SOCKET通讯可以正常通讯.
但是,
当其中任意一个SOCKET通讯完成时,第二个DLL程序自动退出,但是第一个DLL程序不管怎么样,始终退不出来.
但强行关闭时,DCOM会报错"无效的窗口句柄".
那位大侠知道,请帮帮忙