[续] ActiveX Exe 只允许一个进程时创建对象失败
上一贴:http://topic.csdn.net/u/20100730/10/c4847af7-736d-4457-acef-f2716e80ae03.html
上一贴说过 通过间接访问网页来启动ActiveX Exe进程,并保证这个进程能在Asp中用GetObject共享。
接下来测试了一天,写了个测试的页面,定时n秒刷新一次,每次都会在asp中用GetObject()获取对象。本来预想的是无论客户端开多少个网页(在IIS负载允许下),无论在何时、何地打开网页,在服务器端应该是只有一个ActiveX的进程的。
但测试结果很让人失望。
8.04 17:00开始测试(打开多个测试页面,不关机,直到第二天上班)
8.04 21:59 在家里访问了一下测试页面(结果第二天上班时发现居然创建了一个用户名为SYSTEM的ActiveX Exe的进程)
8.05 8:48 在另一台同事的电脑上访问这个测试页面,结果立即在服务器端就创建了一个新的ActiveX Exe进程。
(以上时间是后来用GetProcessTimes读取到的)
接下来,把所有打开的ActiveX Exe关闭,重新测试。仍然是“有时候”会创建多于一个的进程。有时候只有一个进程。还没发现“创建多于一个的进程”的规律。
ActiveX Exe设置的是“线程缓冲池(1线程)”,与这个设置有关吗?
[解决办法]
这个只能把当前能想到的进行测试了.
记住一次只动一个地方,这样不会乱
[解决办法]
也就是Web服务通过外网访问和通过内网访问被处理成了两个 workstation,不知道系统怎么规定的。
还是回头讨论一下需求吧,你出于什么目的才必须要求一个唯一对象实例?
通常 Web 上的 Session 之间全局信息是通过数据库之类的永久存储信息来进行交互的。
[解决办法]
这样很简单。
还是原先一个自启动的程序,负责与仪器交互。唯一的区别是命令从数据库取,返回的结果也写到数据库中。
ASP 就只需要和数据库打交道就可以了,最多你的 html 中加上定时刷新功能。
[解决办法]
晕倒,都这么麻烦了,为啥不能改改需求?
界面是一个EXE,而ASP调用的是一个DLL
这样的话啥麻烦都没了........
现在才发现你这个需求很BT....
[解决办法]
数据库同时开几十个连接都没问题。
Web 哪来的实时?
好 NB 的硬盘,你写坏一个硬盘试试?