/// <summary> /// Start one thread ThreadFilter by event log name /// </summary> private void StartThread() { deb.Write("Preparation of Threads", "Start threads", DateTime.Now, 2); ArrayList list = new ArrayList(iFilters.Keys); String[] eventLogNames = (String[])list.ToArray(typeof(string)); doneEvents = new ManualResetEvent[eventLogNames.Length]; try { int i = 0; foreach (String eventLog in eventLogNames) { try { ThreadFilter[] filterArray = new ThreadFilter[eventLogNames.Length]; doneEvents[i] = new ManualResetEvent(false); ThreadFilter tf = new ThreadFilter(eventLog, ref syslogServer, (ArrayList)iFilters[eventLog], (ArrayList)eFilters[eventLog], ref deb, lastExecTime, maxExecTime, doneEvents[i]); filterArray[i] = tf; ThreadPool.QueueUserWorkItem(tf.ThreadLoop, i); } catch (System.NullReferenceException e) { deb.Write("Preparation of Threads", "401 - Problem starting thread for " + eventLog + "package rules due to: " + e.Message, DateTime.Now, 1); } i++; } } catch (System.NullReferenceException e) { deb.Write("Preparation of Threads", "402 - Problem starting threads due to: " + e.Message, DateTime.Now, 1); System.Environment.Exit(-1); } deb.Write("Preparation of Threads", "End of starting threads", DateTime.Now, 2); }