////////////////////////////////////////////////////////
        ///
        ///  Here is the actual workhorse
        ///
        ///
        public static void ScanForForeCastData()
        {
            try
            {
                while (true)
                {
                    ////////////////////////////////
                    ///
                    ///  Clean up all the data
                    ///
                    CSyntaxErrorLog.Cleanup();
                    CSemanticErrorLog.Cleanup();
                    GlobalSettings.Cleanup();
                    ///////////////////
                    ///
                    ///  Do Processing
                    ///

                    ScanAndProcess();
                    /////////////////////////////////////////
                    ///
                    ///  Sleep the Thread for 2 minutes.
                    ///  in the production build , it should run
                    ///  in an interval of at least 10 minutes
                    ///
                    ///
                    System.GC.Collect();
                    System.Threading.Thread.Sleep(60000 * 5);
                }
            }
            catch (Exception e)
            {
                System.Diagnostics.EventLog.WriteEntry("ForeCastLog", "Exception thrown by the Thread");
                System.Diagnostics.EventLog.WriteEntry("ForeCastLog", e.ToString());
            }

            return;
        }