在用户ActiveX DLL中,定义一个定时器 TimerX在类模块代码中定义一个事件 event TheEvent(param1 as ....)TimerX中检测sub TimerX_Timer if 某种条件到达 then raiseevent TheEvent(....) end if end sub
在用户ActiveX DLL中,定义一个定时器 TimerX,并设置使能为false在类模块代码中定义一个事件 event TheEvent(param1 as ....)TimerX中检测sub TimerX_Timer if 某种条件到达 then raiseevent TheEvent(....) timerx.enabled=false '事件发生后,定时器关闭 end if end sub 异步方法: public sub aSub(...) timerx.Enabled =True end sub同步方法: public sub bSub(...) 原来怎么做还是怎么做 end sub
不信你自己试试ActiveX EXE和ActiveX DLL是前者本身就是异步的,拥有单独的进程,后者是同步的,没有单独的进程。不然为什么我问这个问题的时候,8楼这样回答我呢:这个说法不对,对exe部件方法的调用,并没有异步,假设有以下代码sub aSub dim x as new aExeComponent ....a=x.aFunction(...)'调用部件x的方法aFunction b=a+cend sub上述中b=a+c语句只有在x.aFunction(...)执行完毕后,才能运行,如果x.aFunction运行时间很长,代码将在此处阻塞,知道x.aFunction返回,才能运行下一个语句.......这是同步的
event TheEvent(param1 as ....)TimerX中检测sub TimerX_Timer
if 某种条件到达 then
raiseevent TheEvent(....)
end if
end sub
event TheEvent(param1 as ....)TimerX中检测sub TimerX_Timer
if 某种条件到达 then
raiseevent TheEvent(....)
timerx.enabled=false '事件发生后,定时器关闭
end if
end sub
异步方法:
public sub aSub(...)
timerx.Enabled =True
end sub同步方法:
public sub bSub(...)
原来怎么做还是怎么做
end sub
ActiveX DLL 进程内部件,其运行于调用者的进程中 ,使用com+可以运行于其他机器作为服务器
不信你自己试试ActiveX EXE和ActiveX DLL是前者本身就是异步的,拥有单独的进程,后者是同步的,没有单独的进程。不然为什么我问这个问题的时候,8楼这样回答我呢:这个说法不对,对exe部件方法的调用,并没有异步,假设有以下代码sub aSub
dim x as new aExeComponent
....a=x.aFunction(...)'调用部件x的方法aFunction
b=a+cend sub上述中b=a+c语句只有在x.aFunction(...)执行完毕后,才能运行,如果x.aFunction运行时间很长,代码将在此处阻塞,知道x.aFunction返回,才能运行下一个语句.......这是同步的
呵呵,那我就不懂了,MSDN的异步的例子也是用定时器的,你可以自己去看
主程序SHELL调用EXE,传参数进去。
EXE用COMMAND取到参数,然后干活。
EXE干完活后,通过getobject取到主程序的某个注册的实例,
然后调用某方法,就可以通知到主程序了。
不需要共享文件,是主程序共享一个实例。
关于getobject,我已经贴过具体的代码。
dll的话还是你采用的多线程的方式吧。不知道你现在是怎么做的~