//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //생성 :
        //추가 :
        //목적 : 시퀀스 스레드
        //설명 :
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private static void ThreadManager(object state)
        {
            structureManagerArgs            obj   = ( structureManagerArgs )state;
            CProcessVisionManagerProcess150 pThis = (CProcessVisionManagerProcess150)obj.pThis;
            int iCameraIndex = obj.iCameraIndex;
            // 트리거는 토글 형식으로 동작하는데.. 라이브는 on, off 형식이라 기본 Live off 함수로 들어감.
            // 이전 값 갖고 변경되는 시점에만 함수 타도록 변경
            bool bPreviousLive = false;
            bool bLive         = false;

            while (false == pThis.m_bThreadExit)
            {
                // 검사 타입별로 Is, Do 함수 구분시킴
                // 트레이 파트
                if (pThis.m_typeProcessVisionProcess150 == pThis.m_objProcessVisionProcess150[iCameraIndex].GetType())
                {
                    if (true == pThis.IsInspection(iCameraIndex))
                    {
                        pThis.DoProcessInspection(iCameraIndex);
                    }
                    else
                    {
                        bLive = pThis.IsLive(iCameraIndex);
                        if (bPreviousLive != bLive)
                        {
                            pThis.DoProcessLive(iCameraIndex, bLive);
                        }
                        bPreviousLive = bLive;
                    }
                }
                Thread.Sleep(5);
            }
        }
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //생성 :
        //추가 :
        //목적 : 초기화 함수
        //설명 :
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        public override bool Initialize()
        {
            bool bReturn = false;

            do
            {
                var pDocument = CDocument.GetDocument;
                // 비전 얼라인
                m_objProcessVisionProcess150 = new CProcessAbstract[( int )CDefine.enumCamera.CAMERA_FINAL];
                for (int iLoopCount = ( int )CDefine.enumCamera.CAMERA_1; iLoopCount < ( int )CDefine.enumCamera.CAMERA_FINAL; iLoopCount++)
                {
                    CProcessVisionProcess150 obj = new CProcessVisionProcess150();
                    obj.Initialize(iLoopCount);
                    m_objProcessVisionProcess150[iLoopCount] = obj;
                    m_typeProcessVisionProcess150            = obj.GetType();
                }

                // PLC 객체 참조
                m_objPLC = pDocument.m_objProcessMain.m_objPLC;
                // 조명 컨트롤러 객체 참조
                m_objLightController = new CDeviceLightController[pDocument.m_objProcessMain.m_objLightController.Length];
                for (int iLoopCount = 0; iLoopCount < pDocument.m_objProcessMain.m_objLightController.Length; iLoopCount++)
                {
                    m_objLightController[iLoopCount] = pDocument.m_objProcessMain.m_objLightController[iLoopCount];
                }
                // 메인 스레드
                m_ThreadManager = new Thread[( int )CDefine.enumCamera.CAMERA_FINAL];
                for (int iLoopCount = 0; iLoopCount < m_ThreadManager.Length; iLoopCount++)
                {
                    m_ThreadManager[iLoopCount] = new Thread(ThreadManager);
                    structureManagerArgs objArgs = new structureManagerArgs(this, iLoopCount);
                    m_ThreadManager[iLoopCount].Start(objArgs);
                }

                bReturn = true;
            } while(false);

            return(bReturn);
        }