DEFINE CLASS ApJobRun AS session OLEPUBLIC asjr = 0 PROCEDURE init set exact on set ansi on set date to BRITISH this.asjr = createobject("jobruntimer") ENDPROC PROCEDURE asRunjob(inJob,inFile,inPRG) if this.asjr.Cjobid != "" && if we have a job running, return .F. ie busy return .F. endif this.asjr.CJobid = inJob this.asjr.CFile = inFile this.asjr.CPRG = inPRG return .T. && job accepted ENDPROC ENDDEFINE DEFINE CLASS jobruntimer AS Timer && PRG needed vars && make them private in timer event so the prg should also see them CJobid = "" CFile = "" && Actual PRG name and Timer interval (5 seconds) CPRG = "" Interval = 5000 PROCEDURE timer private Job private Inputfile private CPRG if this.CJobid != "" Job = this.CJobid Inputfile = this.CFile PRG = this.CPRG do (PRG) && reset set commands incase prg plays with them set exact on set ansi on set date to BRITISH this.CJobid = "" this.CFile = "" this.CPRG = "" endif ENDPROC ENDDEFINEand to test I had a PRG which would bring up a messagebox with the job variable, which I started from the 3 COM obejects. Again like I said it all works great, I just wanted to open it up to creative criticism/ positive ideas. I'm going to have the COM EXE fire up on 3 different processing machines so the effort of running the jobs is shared.