Is there a way to make scripts wait their turn? I am having a problem where multiple scripts want to run at the same time & cause havoc.
Details: I have a script (and copies of the script) that is scheduled to run every minute from 0:00-5:56, 6:06-15:56, 16:06-23:56
In addition to those scripts, I have one that runs ONCE at 6:00 and 16:00 (and should only last 4 minutes). Somehow there is some overlap & they run at the same time.
I have unchecked "Allow Multiple Instances", but I'm thinking that this is only to prevent the same script running twice. I have also searched the forums, but couldn't find anything that relates.
Seems like there is something I'm missing. Any help is greatly appreciated!
Make Scripts wait their turn?
Moderators: Dorian (MJT support), JRL
Re: Make Scripts wait their turn?
I don't know a way to use the Scheduler to control your issue. But I have used dialogs to let one script detect that another is running.
Place the following code at the very top of those scripts that conflict. The code will loop if the dialog "WaitYourTurn" exists. The dialog will exist while a script with this code in it is running. When the script stops the dialog will no longer exist and the second script will exit the "WaitYourTurnLoop" loop and create its own dialog that will cause the next script using this process to dwell... etc...
Place the following code at the very top of those scripts that conflict. The code will loop if the dialog "WaitYourTurn" exists. The dialog will exist while a script with this code in it is running. When the script stops the dialog will no longer exist and the second script will exit the "WaitYourTurnLoop" loop and create its own dialog that will cause the next script using this process to dwell... etc...
Code: Select all
Label>WaitYourTurnLoop
IfWindowOpen>WaitYourTurn
Wait>1
Goto>WaitYourTurnLoop
EndIf
Dialog>WaitYourTurn
EndDialog>WaitYourTurn
-
- Pro Scripter
- Posts: 70
- Joined: Sun May 03, 2009 11:49 pm
- Location: AU
Re: Make Scripts wait their turn?
You could use an ini file to tell other scripts to wait...
Somthing like this simply scenario. Depends how many scripts you have running determines complexity:
Somthing like this simply scenario. Depends how many scripts you have running determines complexity:
Code: Select all
'call this sub when the script runs
GoSub>MyTurn,mt1,1
'when done change to 0 for nex script to process
GoSub>MyTurn,mt1,0
SRT>MyTurn
Let>iniD=C:\Temp
Let>iniF=C:\Temp\inFile.ini
Let>mtEnt=%MyTurn_Var_1%
Let>mtVal=%MyTurn_Var_2%
IfNotDirExists>iniD
'create
CreateDir>iniD
EndIf
IfNotFileExists>iniF
LabelToVar>iniFTmp,sTxt
WriteLn>iniF,res,%sTxt%
EndIf
'MyTurn is mt1(script1)
EditIniFile>%iniF%,MYTURN,%mtEnt%,%mtVal%
/*
iniFTmp:
[MYTURN]
mt1=0
mt2=0
mt3=0
*/
END>MyTurn
Loving MS's Capabilities!!!