Page 1 of 1

Don't run profile if specific other profile(s) are running?

Posted: Wed Oct 28, 2020 1:07 pm
by james_c_stein@fd.org
Is there a way to set a profile to not run if another profile is running?

I know I can chain profiles so one runs after the other. However, occasionally I run into a situation where the chained profile takes longer than the repeat period on the profile it is chained to. I'd like to be able to either stop the origin profile from running if the chained profile is still running, or stop to the chained profile so the origin profile can run. Are either of these options possible?

Re: Don't run profile if specific other profile(s) are running?

Posted: Wed Oct 28, 2020 3:50 pm
by tobias
Hello,
please see the OnCanRunProfile Sample Script on our PascalScript page:
https://www.syncovery.com/pascalscript/

Re: Don't run profile if specific other profile(s) are running?

Posted: Mon Nov 02, 2020 7:36 pm
by james_c_stein@fd.org
Thanks that looks like it will do the trick.

Re: Don't run profile if specific other profile(s) are running?

Posted: Mon Nov 09, 2020 3:52 pm
by james_c_stein@fd.org
One question,

Does the example script just pause the profile for 60 seconds and then run it regardless of P1 or P2 already running or does it check again in 60 seconds?

I ask because it doesn't actually seem to be stopping the 2 profiles from running together.

I already have p2 chained to run after P1. The problem is P1 starts up again before p2 is finished.

Re: Don't run profile if specific other profile(s) are running?

Posted: Mon Nov 09, 2020 4:44 pm
by tobias
Hi,
the check is done every time before the profile is launched.

Did you enter the PascalScript via the global Program Settings, tab sheet Advanced, using the "Global Pascal Script" checkbox?

Re: Don't run profile if specific other profile(s) are running?

Posted: Mon Nov 30, 2020 8:51 pm
by james_c_stein@fd.org
Yes I did. I restarted the machine and since then haven't seen those 2 profiles running together. I now need to modify that script for other profiles I have several pairs of profiles that I don't want running at the same time.

Re: Don't run profile if specific other profile(s) are running?

Posted: Mon Nov 30, 2020 10:45 pm
by tobias
Hi,
great, you can extend the mutual exclusions, for example:

Code: Select all

const p1='Profile Name 1';
         p2='Profile Name 2';
         p3='Profile Name 3';
         p4='Profile Name 4';

function OnCanRunProfile(const ProfileName:UnicodeString; var PostponeBySeconds:Integer):Boolean;
begin
  if ProfileName=p1 then
     Result:=not ProfileRunning(p2)
  else
     if ProfileName=p2 then
       Result:=not ProfileRunning(p1)
     else
     if ProfileName=p3 then
       Result:=not ProfileRunning(p4)
     else
     if ProfileName=p4 then
       Result:=not ProfileRunning(p3)
     else
       Result:=true;
  if not Result then
     PostponeBySeconds:=60;
  end;

Re: Don't run profile if specific other profile(s) are running?

Posted: Tue Jan 12, 2021 1:25 pm
by james_c_stein@fd.org
I never said thanks for this.. I wound up with several pairs of profiles i didn't want running at the same time and the if else became unmanageable so I came up with this. I figured I'd share it.

Code: Select all

const p1='Profile Name 1';
      p2='Profile Name 2';

      p3='Profile Name 3';
      p4='Profile Name 4';

      p5='Profile Name 5';
      p6='Profile Name 6';

      p7='Profile Name 7';
      p8='Profile Name 8';

      p9='Profile Name 9';
      p10='Profile Name 10';

function OnCanRunProfile(const ProfileName:UnicodeString; var PostponeBySeconds:Integer):Boolean;
begin
  Result:=false;
  case (ProfileName) of
    p1: Result:=not ProfileRunning(p2);
    p2: Result:=not ProfileRunning(p1);
    p3: Result:=not ProfileRunning(p4);
    p4: Result:=not ProfileRunning(p3);
    p5: Result:=not ProfileRunning(p6);
    p6: Result:=not ProfileRunning(p5);
    p7: Result:=not ProfileRunning(p8);
    p8: Result:=not ProfileRunning(p7);
    p9: Result:=not ProfileRunning(p10);
    p10: Result:=not ProfileRunning(p9);
  else
    Result:=true;
  end;

  if not Result then
    PostponeBySeconds:=60;
end;

Re: Don't run profile if specific other profile(s) are running?

Posted: Tue Jan 12, 2021 2:08 pm
by tobias
Thanks!