콜백 VI는 사용자가 지정한 ActiveX 또는 .NET 이벤트를 핸들링하기 위해 작성한 코드를 포함합니다. ActiveX 컨트롤 또는 .NET 객체가 등록된 이벤트를 생성하면, 콜백 VI를 생성하여 해당 이벤트를 처리해야 합니다. 콜백 VI는 이벤트가 발생하면 실행됩니다. 사용자가 콜백 VI를 생성할 때, LabVIEW는 재호출 VI를 생성하여 사용자가 이벤드를 처리하기 위해 이를 열고 편집할 수 있게 합니다. 콜백 VI에는 다음이 포함됩니다.

  • 이벤트 공통 데이터는 다음과 같은 원소들을 포함합니다.
    • 이벤트 소스는 LabVIEW, ActiveX, .NET과 같은 이벤트의 소스를 지정하는 숫자형 컨트롤입니다. 1의 값은 ActiveX 이벤트를 나타냅니다. 2의 값은 .NET 이벤트를 나타냅니다.
    • 이벤트 타입은 어떤 이벤트가 발생했는지 지정합니다. 이는 사용자 인터페이스 이벤트의 경우 열거형 타입이며 ActiveX, .NET 및 기타 이벤트 소스의 경우 32비트 부호 없는 정수 타입입니다. ActiveX 이벤트의 경우, 이벤트 타입은 등록된 이벤트의 메소드 코드 또는 ID를 나타냅니다. .NET의 경우 이 원소를 무시해도 됩니다.
    • 타임스탬프는 이벤트가 생성된 시간을 밀리초 단위로 지정하는 타임스탬프입니다.
  • 컨트롤 참조는 이벤트가 발생한 ActiveX, 오토메이션 참조 번호 또는 .NET 객체에 대한 참조입니다.
  • 이벤트 데이터는 콜백 VI가 처리하는 이벤트에 특정한 파라미터의 클러스터입니다. LabVIEW는 [이벤트 콜백 등록] 함수로부터 이벤트를 선택할 때 적절한 이벤트 데이터를 결정합니다. 이벤트에 관련된 데이터가 없는 경우, LabVIEW는 콜백 VI에서 이 컨트롤을 생성하지 않습니다.
  • 이벤트 데이터 출력은 콜백 VI가 처리한 이벤트에 대한 변경 가능한 파라미터의 클러스터입니다. 이 원소는 ActiveX 또는 .NET 이벤트가 출력 파라미터를 가지고 있을 때에만 사용 가능합니다.
  • (옵션) 사용자 파라미터는 .NET 또는 ActiveX 객체가 이벤트를 생성할 때 콜백 VI에 전달하려는 데이터입니다.
노트 사용하려는 VI의 커넥터 팬이 이벤트 데이터의 커넥터 팬과 일치하는 한 기존의 VI를 콜백 VI로 사용할 수 있습니다. 콜백 VI는 재호출이어야 하고 콜백 VI에 대한 참조는 엄격한 타입이어야 합니다.

콜백 VI가 중단 없이 실행될 수 있도록 LabVIEW는 콜백 VI의 실행이 정지되거나 사용자가 모달 윈도우를 로드할 때까지 OS 메시지의 처리를 지연시킵니다. LabVIEW가 OS 메시지의 처리를 지연하면, LabVIEW 프런트패널을 편집하거나 작동시킬 수 없습니다. 모달 윈도우는 윈도우를 닫거나 다른 모달 윈도우를 열 때까지 활성화 상태로 있거나 다른 LabVIEW 윈도우보다 상위에 있는 윈도우 타입입니다. 모달 윈도우가 열려 있는 동안에는 다른 윈도우와 상호작용을 할 수 없습니다. 대부분의 LabVIEW 대화 상자는 모달 윈도우입니다.

다른 프로세스가 실행 중일 때에는 LabVIEW 콜백 VI나 DLL에서 모달 윈도우가 아닌 윈도우를 열 수 없습니다. 콜백 VI 또는 DLL에서의 모달이 아닌 윈도우 호출에 대한 추가적인 정보는 프로그램적으로 모달이 아닌 윈도우 호출하기를 참조하십시오.

노트 ActiveX 객체는 ActiveX 콜백 VI를 동시에 호출합니다. 이로 인해 콜백을 실행하는 동안 객체가 다른 코드를 실행할 수 없어서 교착이 발생할 수도 있습니다. 콜백 다이어그램과 다른 코드 사이의 상호작용을 주의깊게 고려해야 합니다. 예를 들어, 서브루틴이 이미 실행 중인 동안에 ActiveX 콜백 VI를 호출하는 경우에 ActiveX 콜백 VI 안에서의 재호출이 아닌 서브루틴을 호출하면 응답 없음 상태가 될 수 있습니다.