해결책
이 동작은 예상되는 현상 입니다. 점유된(실행중인) VI가 단일 스레드에서 실행되고 있고 XControl에 데이터 변경 이벤트를 지속적으로 생성하기 때문에 발생합니다. XControl은 생산자 / 소비자 아키텍처와 유사하게 다른 스레드에서 데이터 변경 이벤트에 응답합니다. 많은 수의 매트릭스 계산 및 객체 다시 그리기가 단일 루프보다 더 많은 시간이 걸리기 때문에 소비자가 생산자보다 느리게 실행됩니다. XControl은 데이터 변경 이벤트를 버퍼링하고 순차적으로 응답합니다. 소유 한 VI가 정지하더라도 XControl은 다른 스레드에서 실행되기 때문에 모든 이벤트에 응답 할 때까지 계속 실행됩니다.
이 문제를 피하기위한 몇 가지 해결 방법과 권장 사항이 있습니다.
- 루프 내에서 인디케이터를 사용하지 마십시오. 루프가 완료된 후 데이터를 인디케이터에 플로팅합니다.
- 루프에서 인디케이터를 사용해야하는 경우 기다림 함수을 사용하여 루프 반복을 느리게하십시오.
- 루프 내에서 또는 병렬로 다른 사용자 인터페이스 작업을 피하십시오.
- 많은 양의 데이터 세트와 함께 인디케이터를 사용하지 마십시오.
- 많은 양의 데이터 세트가 있는 경우 데이터를 간소화시켜 인디케이터에 보내십시오. 예를 들어 인접 지점의 평균을 구하고 평균값을 인디케이터로 보냅니다.
- 루프 내에서 LabVIEW 메모리 관리자를 호출하지 마십시오. 이러한 호출은 특정 배열 기능을 사용할 때 이루어집니다. 더 자세한 정보는 VI Memory Usage를 참조하십시오.
- 인디케이터의 성능은 시스템에 따라 다릅니다. 프로그래밍시 배포 시스템과 개발 시스템 기능을 모두 고려해야합니다.