示例#1
0
 internal static void AddExecutable(AntisThreadExecutable execute)
 {
     if (executables == null)
     {
         executables = new List <AntisThreadExecutable>();
     }
     lock (executables)
     {
         if (!executables.Contains(execute))
         {
             executables.Add(execute);
         }
     }
 }
示例#2
0
 internal static void RemoveExecutable(AntisThreadExecutable execute)
 {
     if (executables == null)
     {
         return;
     }
     lock (executables)
     {
         if (executables.Contains(execute))
         {
             executables.Remove(execute);
         }
     }
 }
示例#3
0
        private static void Loop()
        {
            AntisThreadExecutable[] exec = null;
            bool needRemove = false;

            while (true)
            {
                lock (executables)
                {
                    exec = executables.ToArray();
                }
                if (exec.Length > 0)
                {
                    int iterator = 0;
                    while (iterator < exec.Length)
                    {
                        AntisThreadExecutable executable = exec[iterator++];
                        if (executable == null)
                        {
                            needRemove = true;
                            continue;
                        }
                        executable.Check();
                    }
                }
                if (needRemove)
                {
                    lock (executables)
                    {
                        executables.RemoveAll(delegate(AntisThreadExecutable execute) { return(execute == null); });
                    }
                    needRemove = false;
                }
                Thread.Sleep(sleepTime);
                if (nextSleepTime > 0)
                {
                    sleepTime     = nextSleepTime;
                    nextSleepTime = -1;
                }
            }
        }