/// ----------------------------------------------------------------------------------- /// <summary> /// Initializes a new instance of the <see cref="ParserScheduler"/> class. /// </summary> /// ----------------------------------------------------------------------------------- public void Init(string server, string database, string LangProject) { DebugMsg("ParserScheduler constructor is being called"); Trace.WriteLineIf(tracingSwitch.TraceInfo, "ParserScheduler(): CurrentThreadId = " + Win32.GetCurrentThreadId().ToString()); m_server = server; m_database = database; m_LangProject = LangProject; m_paused = false; m_sqlConnection = new SqlConnection(GetConnectionString()); m_sqlConnection.Open(); SqlCommand command = m_sqlConnection.CreateCommand(); command.CommandText = "select top 1 ParserParameters from MoMorphData"; XmlDocument doc = new XmlDocument(); doc.LoadXml(((string)command.ExecuteScalar()).Trim()); XmlNode parserNode = doc.SelectSingleNode("/ParserParameters/ActiveParser"); m_parser = parserNode == null ? "XAmple" : parserNode.InnerText; // could use reflection to create the correct parser worker, then this switch statement // would not need to be updated for each parser, probably not a big deal for now switch (m_parser) { case "XAmple": m_parserWorker = new XAmpleParserWorker(m_sqlConnection, m_database, m_LangProject, new TaskUpdateEventHandler(this.HandleTaskUpdate)); break; case "HC": m_parserWorker = new HCParserWorker(m_sqlConnection, m_database, m_LangProject, new TaskUpdateEventHandler(this.HandleTaskUpdate)); break; } m_lastGrammarUpdateStamp = new TimeStamp(); m_fForceGrammarOrLexiconNeedsUpdatingCheck = false; m_StopEvent = new ManualResetEvent(false); m_PauseEvent = new ManualResetEvent(false); m_QueueEvent = new ManualResetEvent(false); m_TryAWordEvent = new ManualResetEvent(false); m_waitTime = new TimeSpan(0, 0, 1); m_lowQueue = new M3ParserWordformQueue(); m_mediumQueue = new M3ParserWordformQueue(); m_highQueue = new M3ParserWordformQueue(); // m_traceQueue = new M3ParserWordformQueue(); m_consumerThread = new Thread(new ThreadStart(this.ConsumerThreadStart)); m_consumerThread.Priority = ThreadPriority.BelowNormal; m_consumerThread.IsBackground = true; // Can't prevent owning app from terminating. m_consumerThread.Name = "Parser scheduler-worker"; m_consumerThread.SetApartmentState(ApartmentState.STA); // do before starting - DH m_consumerThread.CurrentUICulture = System.Threading.Thread.CurrentThread.CurrentUICulture; m_consumerThread.Start(); m_cref = 1; }
private void AddToQueue(int hvoWordform, M3ParserWordformQueue queue) { queue.EnqueueWordform(hvoWordform); }