Пример #1
0
 protected override RunStatus Run(object context)
 {
     if (!IsDone)
     {
         if (_sub == null)
         {
             if (!GetSubRoutine())
             {
                 Professionbuddy.Err("Unable to find Subroutine with name: {0}.", SubRoutineName);
                 IsDone = true;
             }
         }
         if (!ranonce)
         {
             // make sure all actions within the subroutine are reset before we start.
             _sub.Reset();
             ranonce = true;
         }
         if (_sub != null)
         {
             if (!_sub.IsRunning)
             {
                 _sub.Start(SubRoutineName);
             }
             try
             {
                 _sub.Tick(SubRoutineName);
             }
             catch { IsDone = true; _sub.Reset(); return(RunStatus.Failure); }
             IsDone = _sub.IsDone;
             // we need to reset so calls to the sub from other places can
             if (!IsDone)
             {
                 return(RunStatus.Running);
             }
         }
     }
     return(RunStatus.Failure);
 }
Пример #2
0
 protected override RunStatus Run(object context)
 {
     if (!IsDone)
     {
         if (_sub == null)
         {
             if (!GetSubRoutine())
             {
                 Professionbuddy.Err("{0}: {1}.", Pb.Strings["Error_SubroutineNotFound"], SubRoutineName);
                 IsDone = true;
             }
         }
         if (!_ranonce)
         {
             // make sure all actions within the subroutine are reset before we start.
             if (_sub != null)
             {
                 _sub.Reset();
             }
             _ranonce = true;
         }
         if (_sub != null)
         {
             if (!_sub.IsRunning)
             {
                 _sub.Start(SubRoutineName);
             }
             try
             {
                 _sub.Tick(SubRoutineName);
             }
             catch (ThreadAbortException)
             {
                 return(RunStatus.Success);
             }
             catch
             {
             }
             IsDone = _sub.IsDone;
             // we need to reset so calls to the sub from other places can
             if (!IsDone)
             {
                 return(RunStatus.Success);
             }
         }
     }
     return(RunStatus.Failure);
 }