NetLogic 수명 주기
신뢰할 수 있는 코드를 위해
FactoryTalk Optix
가 NetLogic 스레드, Start, Stop, ExportMethod 실행 및 태스크 스레딩을 관리하는 방법을 알아보십시오. 코드 예제 및 고급 사용법은 FactoryTalk Optix NetLogic cheat sheet를 참조하십시오.실행 컨텍스트 및 스레드
FactoryTalk Optix Runtime
에는 UI 스레드와 동작 스레드라는 두 가지 기본 실행 컨텍스트가 포함되어 있습니다. UI 스레드는 그래픽 개체를 렌더링하고 사용자 입력을 처리합니다. 동작 스레드는 NetLogic을 포함한 동작에서 Start()
및 Stop()
메서드를 순차적으로 호출합니다. 이러한 스레드는 독립적으로 작동합니다.런타임 풀, 전용 스레드 및 디스패치 동작에 대한 자세한 내용은 런타임 스레딩 모델을 참조하십시오.
Start 및 Stop 메서드 수명 주기
런타임은 노드(페이지, 개체, 위젯)가 활성화될 때
Start()
메서드를 호출합니다. 런타임은 동작 스레드에서 각 Start()
메서드를 한 번에 하나씩 순차적으로 호출합니다. 더 깊은 노드는 부모보다 먼저 시작됩니다. 여러 NetLogic이 동일한 깊이를 공유하는 경우 해당 순서는 트리 순회를 따르지만 결정적이지는 않습니다.런타임은
Start()
의 정확한 역순으로 Stop()
메서드를 동작 스레드에서 순차적으로 호출합니다. 런타임은 Stop()
에 예외를 기록하고 시퀀스를 중단하지 않습니다. Stop()
후 런타임은 NetLogic 인스턴스를 삭제합니다.
주의:
런타임 NetLogic의
Start()
메서드에서 페이지 트리의 노드를 추가하거나 제거하지 마십시오. 트리를 동적으로 수정해야 하는 경우 페이지 유형 정의를 변경하고 세션에서 페이지를 로드합니다.
팁:
Start()
메서드가 2000ms보다 오래 걸리면 런타임은 경고를 기록합니다. 느린 Start()
메서드는 이후 NetLogic 초기화를 지연시키고 페이지 로드 중 눈에 띄는 멈춤 현상을 유발할 수 있습니다. 페이지 탐색 중 런타임은 새 페이지에서 Start()
를 호출한 후 이전 페이지에서 Stop()
을 호출할 수 있습니다. 페이지가 전역 또는 외부 리소스를 공유하는 경우 이러한 겹침으로 인해 예기치 않은 동작이 발생할 수 있습니다.ExportMethod 실행 및 스레드 안전성
[ExportMethod]
로 데코레이팅된 메서드는 이를 트리거하는 스레드에서 동기적으로 실행됩니다. 스레드는 트리거 소스에 따라 다릅니다. UI 스레드, 동작 스레드 또는 전용 작업 스레드. [ExportMethod]
가 공유 변수를 소유한 스레드와 다른 스레드에서 실행되면 동시 액세스가 발생할 수 있습니다. 잠금을 사용하여 공유 데이터를 보호합니다.작업 유형 및 스레드 사용
FactoryTalk Optix
는 비동기 작업을 위한 여러 작업 유형을 지원합니다.- LongRunningTask: 전용 스레드, 정보 모델에 대한 스레드 안전 액세스, 장시간 또는 차단 작업에 사용.
- PeriodicTask: 전용 스레드, 스레드 안전 액세스, 반복 작업에 사용.
- DelayedTask: 전용 스레드, 스레드 안전 액세스, 일회성 지연 작업에 사용.
- async/await(C#): ThreadPool을 사용하며 정보 모델 액세스에 대해 스레드로부터 안전하지 않으므로, 노드 액세스 없이 순수 계산 또는 I/O에 사용합니다.
팁:
모든
FactoryTalk Optix
작업 유형은 정보 모델에 대해 안전합니다. async/await
또는 Task.Run
은 프로젝트 노드에 액세스하지 않는 작업에만 사용합니다.자세한 내용은 비동기 코드 실행 항목을 참조하십시오.
NetLogic
lifecycle
threading
Start method
Stop method
ExportMethod
LongRunningTask
PeriodicTask
DelayedTask
의견을 작성 부탁드립니다.