コード例 #1
0
        private void PreprocessThread()
        {
            GOMLib.GOM_Object_Sketch		sketchObj;
            System.Collections.ArrayList	sketch;

            while (!m_bTerminating)
            {
                m_QueueNotEmpty.WaitOne();

                sketch		= null;
                sketchObj	= null;

                m_Mutex.WaitOne();

                if (m_bTerminating)
                {
                    m_Mutex.ReleaseMutex();
                    return;
                }
                else if ((m_rgSketchObj.Count > 0) && (m_rgSketch.Count > 0))
                {
                    sketchObj	= (GOMLib.GOM_Object_Sketch)m_rgSketchObj[0];
                    sketch		= (System.Collections.ArrayList)m_rgSketch[0];

                    m_rgSketchObj.RemoveAt(0);
                    m_rgSketch.RemoveAt(0);

                    if ((m_rgSketchObj.Count == 0) || (m_rgSketch.Count == 0))
                    {
                        m_QueueNotEmpty.Reset();
                    }
                }

                m_Mutex.ReleaseMutex();

                try
                {
                    if ((sketch != null) && (sketchObj != null))
                    {
                        m_curSketchObj		= sketchObj;
                        HandlePreprocessResult(m_preprocess.RecognizeStroke(EncodeSketchToXML(sketch)));
                    }
                }
                catch
                {
                    System.Windows.Forms.MessageBox.Show("Exception occurs on stroke recognition.");
                    m_preprocess = null;
                    m_preprocess = new Preprocessing.CStrokeRecognitionClass();
                }
            }
        }
コード例 #2
0
        public PreprocessQueue()
        {
            UpdateRequired	= null;
            m_curSketchObj	= null;
            m_bTerminating	= false;
            m_bDebugging	= false;

            m_debugSketch	= null;
            m_debugStroke	= null;
            m_rgSketchObj	= new ArrayList();
            m_rgSketch		= new ArrayList();

            m_preprocess	= new Preprocessing.CStrokeRecognitionClass();
            m_refine		= new StrokeRefineLib.CStrokeRefinementClass();

            m_WorkerThread	= new System.Threading.Thread(new System.Threading.ThreadStart(PreprocessThread));
            m_Mutex			= new System.Threading.Mutex();
            m_QueueNotEmpty	= new System.Threading.ManualResetEvent(false);
        }