VI가 실행하거나 실행하도록 예약되었을 때 LabVIEW는 이벤트를 큐하기 시작합니다. 이벤트 구조는 데이터 흐름에 따라 구조가 실행될 때 큐된 이벤트를 처리합니다. 그러므로, LabVIEW는 이벤트 구조가 이벤트를 처리하기 위해 기다리기 전에도 이벤트를 생성할 수 있습니다.

LabVIEW는 VI가 실행되는 시간 전체에 대해 이벤트를 큐하기 때문에, 데이터 흐름으로 인해 이벤트 구조가 실행을 종료한 후에도 이벤트를 큐할 수 있습니다. 예를 들어 이벤트 구조를 포함하는 루프는 VI가 실행을 지속하는 동안에도 종료될 수 있습니다. 큐된 이벤트가 모두 처리되도록 하려면, 이벤트 구조가 실행을 종료한 후 곧 VI의 실행이 정지되도록 설계합니다.

주의 이벤트 처리를 위해 신속하게 실행되는 이벤트 구조가 없고 프런트패널 잠금이 활성화된 경우, VI의 사용자 인터페이스가 반응하지 않을 수 있습니다. 이런 상황이 발생할 경우, 강제 종료 버튼을 클릭하여 VI를 정지합니다. 이벤트 구조에서 마우스 오른쪽 버튼을 클릭한 후 이벤트 편집 대화 상자의 이 이벤트의 이벤트 케이스가 완료될 때까지 프런트패널 잠금 확인란에서 확인 표시를 제거하여 프런트 패널 잠금을 비활성화할 수 있습니다. 한편 필터 이벤트에 대한 프런트패널 잠금은 해제할 수 없습니다.

While 루프를 사용하여 이벤트 구조로 모든 이벤트를 처리하기

이벤트가 더 발생할 수 없게 될 때 종료하는 While 루프에 이벤트 구조를 놓습니다. 예를 들어, 다음 블록다이어그램에서 이벤트 구조는 While 루프 밖에 있으며 숫자값 변경 케이스에 대해서 프런트패널 잠금이 활성화되어 있습니다.

숫자 컨트롤의 값을 변경할 경우, 이벤트가 발생합니다. 이벤트 구조는 한번 실행되고 값 변경 이벤트를 처리합니다. 숫자 컨트롤의 값을 다시 변경할 경우, 또 다른 이벤트가 발생하며 프런트패널 잠금이 활성화되어 있으므로 사용자 인터페이스가 잠깁니다. 이벤트 구조는 이미 한번 실행되었으며 While 루프내에 있지 않기 때문에 두번째 이벤트를 처리하기 위해서 다시 실행될 수 없습니다. 정지 불리언 컨트롤을 클릭하여 While 루프와 VI를 멈춘 경우, 블록다이어그램에 아직 처리되지 않은 두번째 이벤트가 있기 때문에 VI는 멈추지 않으며 블록다이어그램이 이벤트를 처리할 때까지 정지 불리언 컨트롤을 클릭할 때 LabVIEW는 이벤트를 처리하지 않습니다. 이러한 현상은 이벤트 구조를 While 루프 내에 놓아서 피할 수 있습니다.

케이스 구조의 사용을 피해 이벤트 구조로 이벤트를 처리할 시기를 결정하기

케이스 구조 내부에 이벤트 구조를 놓지 마십시오. 다음 블록다이어그램의 예에서, 케이스 구조 내부에 이벤트 구조가 있고, 값 변경 케이스에 대해서 프런트패널 잠금이 활성화되어 있습니다.

값 얻기 컨트롤을 클릭하면, 프런트패널은 무한히 잠금 상태가 됩니다. 케이스 구조에 거짓 불리언 상수를 연결하면, 이벤트 구조가 참 케이스 안에서 이벤트를 처리하는 것을 방지할 수 있습니다. 이벤트에 대해 패널 잠금이 활성화되어 있기 때문에 프런트패널은 이벤트 구조를 기다려야 하지만, 데이터 흐름으로 인해 이벤트 구조가 이벤트를 처리하도록 실행되지 못합니다. 이 어플리케이션에 대해 프런트패널 잠근을 비활성화하고 값 얻기 컨트롤을 클릭하면, 프런트패널은 응답 가능한 상태가 되고 정지 버튼을 누를 때 완료됩니다. 그러나 이벤트 구조가 실행되어 이벤트를 처리한 것이 아니므로 숫자형 값은 증가되지 않습니다.