有没有办法在DLL中设计异步的过程
就是不用VB的ActiveX EXE异步工程,就是用ActiveX DLL工程去设计,而且要求能自主控制当前的调用是否是一个异步调用。例如,在一个sub过程里,有一个值为布尔类型的参数,如果为True,那么当前的sub过程调用就是异步的,如果传进来的是False就是同步的。
各位大神,懂我意思了吗?看看有没有方法?
[解决办法]
在用户ActiveX DLL中,定义一个定时器 TimerX
在类模块代码中定义一个事件
event TheEvent(param1 as ....)
TimerX中检测
sub TimerX_Timer
if 某种条件到达 then
raiseevent TheEvent(....)
end if
end sub
[解决办法]
谁说用了,所有过程都是异步的?
你完全可以一些借口是同步的,而另一些接口是异步的
[解决办法]
要异步就要使用定时器,代码需要使用定时器来触发执行
不是使用定时器触发的过程都是同步的
[解决办法]
但是在ActiveX EXE里的过程并不需要定时器,本身就是异步的,你调用它之后立即返回。 这是谁说的?ActiveX EXE 一般情况下,都是同步的,比如其内部有一个过程aProc,需要很花时间,现在你客户端调用该该过程,客户端代码只要等待到ActiveX EXE里的过程aProc执行完成要才能运行到下个语句。
异步才需要定时器。
[解决办法]
但是在ActiveX EXE里的过程并不需要定时器,本身就是异步的,你调用它之后立即返回。 这是谁说的?ActiveX EXE 一般情况下,都是同步的,比如ActiveX EXE内部有一个过程aProc,需要很花时间,现在你的客户端调用该该过程,客户端代码只有等待到ActiveX EXE里的过程aProc执行完成后,才能运行到下个语句。
异步才需要定时器。
[解决办法]
ActiveX EXE 进程外部件,其运行在独立的进程中 ,使用dcom可以运行于其他机器作为服务器
ActiveX DLL 进程内部件,其运行于调用者的进程中 ,使用com+可以运行于其他机器作为服务器