求VB多进程的例子
在做一个资料入库程序,涉及到很多类型的资料。原来用TIMER来控制,一种资料用一个TIMER来监控并入库,
但发现多个TIMER会出现TIMER排队和程序假死现象。
分开多个程序来做,则程序太多。
现在想法是每一种资料入库用一个进程来做,编译成ACTIVEX EXE
然后用一个主程序来显示,该主程序内含多个ACTIVEX EXE进程。
求这方面的例程,代码内需要含属性读取、事件设置等内容。谢谢! --------------------编程问答-------------------- 多个Timer会排队假死?
是不是你的数据处理程序太耗用时间? --------------------编程问答-------------------- 用一个Timer来处理,效果应该比多个Timer要好。
此外,在入库处理时最好加入DoEvents来防止假死现象。 --------------------编程问答-------------------- 思路:
做成ACTIVEX EXE控件,控件里完成入库的动作,主程序每次会打开一个com组件完成 --------------------编程问答-------------------- 哦 多进程啊。
msdn,看好了,是微软的帮助文档。那里面有个例子,搜索 Active EXE --------------------编程问答-------------------- Shell "进程1 命令行参数",vbHide
Shell "进程2 命令行参数",vbHide
Shell "进程3 命令行参数",vbHide --------------------编程问答-------------------- 楼上几位讲得不是很清楚。
多个Timer在处理数据时肯定会出现排队现象,貌似两个TIMER同时进行,但从处理速度上就可以看出来。
另外,我的想法是处理过程写成ACTIVEX,但在主程序内能获得子进程的某个属性,比方说处理进度,然后在主程序内显示出来。 --------------------编程问答-------------------- 不需要多个ActiveX EXE进程吧,它可以创建多线程.ActiveX EXE就是进程外部件,调用时就创建一个进程.
部件的意思是它是一个COM组件,进程外的意思是它是自己一个独立进程,与调用者不在同一进程空间.
而ActiveX EXE的另一个特性是可以使用多线程,只需要在工程属性里设置为"每对象对应一个线程",即可在调用进程里通过CreateObject创建位于一个单元线程中的对象.
所以你把你的子功能接口做好,封装到ActiveX EXE内的一个类里,然后编译并由主工程引用,再CreateObject创建对象即可,与普通的类封装没有什么不同.
但要注意的问题有以下几点:
一,ActiveX EXE中的全局变量无效.
原因是每个单元线程都有一个全局副本,使用全局变量时实际上使用的是当前线程中的全局副本,与真正的全局变量无关.
二,尽量减少接口间的调用.
因为单元线程间的调度效率很低,与进程间调度一样低,MSDN上说的,而实际我测试也是如此.
三,处于线程中的对象的调用不能使用需要等待执行的调用.
不然的话就会出现"XXXX无响应"的对话框,让你选择重试什么的.要让每个调用立即返回,微软的做法是参数保存,再启动一个线程内的定时器,这样调用者就能立即返回,然后线程内的定时器启动真正的耗时处理过程.
我这里有个基本例子:
如何在VB6里面实现稳定的多线程 --------------------编程问答-------------------- 多谢老马,我先研究看看。 --------------------编程问答-------------------- 地址打不开了。。。。。。。。。要有简单的例子就好了 --------------------编程问答-------------------- VB6不支持多进程。如果一定要用多个TIMER,你设置一个标志,前面一个TIMER处理完成之后,后面一个TIMER才开始工作。这样就不会出理你说的假死了 --------------------编程问答--------------------
链接里面有例子.
创建了1024个线程. --------------------编程问答-------------------- http://topic.csdn.net/u/20111026/11/19e244c6-4e69-4e59-b4c8-129d8781732e.html?37021
学习老马,写了个多线程
补充:VB , 基础类