Ken,
The timer is running in the same thread as the COM object itself. If you call another method of the COM object while the thing called by the timer is executing I'm pretty sure it'll only return when there is an interline breakpoint in the code. If you are running a single statement like a select that takes 3 minutes to run from the DO in the timer event I don't think your second COM will return until the select finishes. If the code called by the DO has lots of lines of quick running VFP code your second COM call can be processed in between the executions of two lines in the called code.
>for the test i ran this,
>
>
>?"Starting 1"
>myo1 = createobject("apprgrun.apjobrun")
>? myo1.asrunjob("test1","None","testprg.prg")
>inkey(6)
>? myo1.asrunjob("test1","None","testprg.prg")
>?"Starting 2"
>myo2 = createobject("apprgrun.apjobrun")
>? myo2.asrunjob("test2","None","testprg.prg")
>inkey(2)
>? myo1.asrunjob("test1","None","testprg.prg")
>inkey(10)
>release myo1
>release myo2
>release myo3
>return
>
>
>the testprg was just
>
> messagebox(job)
>
>
>running this you get:
>
>
>Starting1
>.T. *5 secs later a messagebox*
>.F. *1 sec later unless you click ok quickly in which case it's .T.*
>Starting 2
>.T.
>.F. *again unluss the box with test one has been clicked*
>