示例#1
0
 /// <summary>
 /// Threads the run.
 /// </summary>
 private void ThreadRun( )
 {
     if (threadCount < this.ConcurrentThreads && Running && Threads.Count > 0 && Arguments.Count > 0)
     {
         Thread t = new Thread(new ThreadStart(delegate {
             --threadCount;
             if (Threads.Count > 0 && Arguments.Count > 0)
             {
                 try {
                     TimeSpan ttss = DateTime.Now.TimeOfDay;
                     Threads.Dequeue( ) (Arguments.Dequeue( ));
                     TimeSpan ttse  = DateTime.Now.TimeOfDay;
                     TimeSpan tdiff = ttse.Subtract(ttss);
                     Log.Debug(string.Format("[{0}] Thread time: {1}", this.Name, tdiff));
                     // sometimes the same thread starts multiple times.
                     ThreadRun( );
                 } catch (Exception ex) {
                     --threadCount;
                     Log.Warn(string.Format("[{0}] {1}", this.Name, ex.Message), ex);
                 } finally {
                 }
             }
         }));
         Log.Debug(string.Format("[{0}] Starting Thread: {1}", this.Name, ++threadCount));
         RunningThreads.Add(t);
         t.Start( );
     }
     else
     {
         if (Threads.Count == 0 && threadCount <= 0)
         {
             Running = false;
         }
     }
 }