示例#1
0
        public void runAnalysisAsync()
        {
            if (m_analysisModules.Count < 1)
            {
                ErrorMessages.NoAnalysisModuleSelected();
            }

            m_counterSem = new Semaphore(0, m_analysisModules.Count);

            m_endThread = new Thread(new ThreadStart(finishAnalysis));
            m_endThread.Start();

            Dictionary <string, Type> modules    = StateMaster.getModules();
            Dictionary <Type, string> moduleTags = new Dictionary <Type, string>();

            foreach (KeyValuePair <string, Type> kvPair in modules)
            {
                moduleTags[kvPair.Value] = kvPair.Key;
            }

            foreach (IModule module in m_analysisModules)
            {
                m_threads.Add(new Thread(new ParameterizedThreadStart(analysisThread)));
                if (module.preferencesAvailable())
                {
                    module.savePreferences(StateMaster.getPreferenceData(moduleTags[module.GetType()]));
                }
                m_threads[m_threads.Count - 1].Start(module);
            }
        }