다음을 통해 공유


백그라운드 애플리케이션 개발

참고

Visual Studio에서 액세스할 수 있는 RS4 이상의 SDK를 설치하지 않으면 RS5(또는 OpenSSH를 사용하는 RS4) IoT 이미지에 배포할 때 Visual Studio가 암호화 오류를 생성합니다.

백그라운드 애플리케이션은 직접 UI가 없는 애플리케이션입니다. 배포 및 구성이 완료되면 이러한 애플리케이션은 머신 시작 시 시작되며 프로세스 수명 관리 리소스 사용 제한 없이 지속적으로 실행됩니다. 작동이 중단되거나 종료되면 시스템이 자동으로 다시 시작됩니다. 이러한 백그라운드 애플리케이션에는 매우 간단한 실행 모델이 있습니다. 템플릿은 "IBackgroundTask" 인터페이스를 구현하고 빈 "Run" 메서드를 생성하는 클래스를 만듭니다. 이 "Run" 메서드는 애플리케이션의 진입점입니다.

백그라운드 작업

한 가지 중요한 점이 있습니다. 기본적으로 실행 메서드가 완료되면 애플리케이션이 종료됩니다. 즉, 입력을 기다리거나 타이머에서 서버를 실행하는 일반적인 IoT 패턴을 따르는 앱은 앱 종료를 조기에 찾을 수 있습니다. 이러한 일이 발생하지 않도록 하려면 "GetDeferral" 메서드를 호출하여 애플리케이션이 종료되지 않도록 해야 합니다. 지연 패턴에 대한 자세한 내용은 여기에서 확인할 수 있습니다.

백그라운드 애플리케이션은 어디에서 설치할 수 있나요?

IoT 템플릿을 다운로드하여 설치하여 Visual Studio 갤러리에서 백그라운드 애플리케이션을 사용하도록 설정할 수 있습니다. 또는 Visual Studio 갤러리에서 검색 Windows IoT Core Project Templates 하거나 확장 및 업데이트 대화 상자(도구 > 확장 및 업데이트 > Online)의 Visual Studio에서 직접 템플릿을 찾을 수 있습니다.

어떤 언어를 사용할 수 있나요?

IoT(백그라운드 애플리케이션) 템플릿은 다음을 위해 찾을 수 있습니다.

  • C++File > New > Project > Installed > Visual C++ > Windows > Windows IoT Core
  • C#File > New > Project > Installed > Visual C# > Windows > Windows IoT Core
  • Visual BasicFile > New > Project > Installed > Visual Basic > Windows > Windows IoT Core
  • 자바 스크립트File > New > Project > Installed > JavaScript > Windows > Windows IoT Core

백그라운드 애플리케이션은 어떻게 사용하나요?

백그라운드 애플리케이션을 만드는 것은 백그라운드 작업을 만드는 것과 매우 유사합니다. 백그라운드 애플리케이션이 시작되면 Run 메서드가 호출됩니다.

public void Run(IBackgroundTaskInstance taskInstance)
{
}

지연 개체를 만들지 않는 한 Run 메서드가 종료되면 백그라운드 애플리케이션이 종료됩니다. 비동기 프로그래밍의 일반적인 방법은 다음과 같이 지연을 수행하는 것입니다.

private BackgroundTaskDeferral deferral;
public void Run(IBackgroundTaskInstance taskInstance)
{
    deferral = taskInstance.GetDeferral();

    //
    // TODO: Insert code to start one or more asynchronous methods
    //
}

지연이 수행되면 지연 개체의 Complete 메서드가 호출될 때까지 백그라운드 애플리케이션이 계속됩니다.

deferral.Complete();

백그라운드 애플리케이션은 어떻게 시작하나요?

이 질문은 배포 및 호출로 나눌 수 있습니다.

백그라운드 애플리케이션을 배포하려면 다음 중 하나를 수행할 수 있습니다.

  • Visual Studio의 F5(빌드, 배포 및 호출)를 사용합니다. 자세한 내용은 Visual Studio에서 배포하고 시작하는 방법을 설명하는 헬로 월드 샘플을 참조하세요.

참고

이렇게 하면 디바이스가 부팅될 때 시작하도록 백그라운드 애플리케이션이 구성되지 않습니다.

  • Project > Store > 앱 패키지 만들기를 선택하여 Visual Studio에서 AppX를 만듭니다. AppX를 만든 후에는 Windows 디바이스 포털을 사용하여 Windows 10 IoT Core 디바이스에 배포할 수 있습니다.

백그라운드 애플리케이션을 호출하려면 다음 중 하나를 수행할 수 있습니다.

  • 위에서 설명한 대로 Visual Studio의 F5 기능은 백그라운드 애플리케이션을 배포하고 즉시 시작합니다.

참고

이렇게 하면 디바이스가 부팅될 때 시작하도록 백그라운드 애플리케이션이 구성되지 않습니다.

  • IoT 디바이스에 배포된 백그라운드 애플리케이션의 경우 iotstartup.exe 유틸리티를 사용하여 디바이스가 부팅될 때 시작되도록 백그라운드 애플리케이션을 구성할 수 있습니다. 백그라운드 애플리케이션을 시작 앱으로 지정하려면 다음 지침을 따릅니다(아래에서 앱의 이름으로BackgroundApplication1 대체).
  1. 여기에 설명된 대로 Windows IoT Core 디바이스에서 PowerShell(PS) 세션을 시작 합니다.

  2. PS 세션에서 다음을 입력합니다.

    [<your IP address>]: PS C:\> iotstartup list BackgroundApplication1

  3. 백그라운드 애플리케이션의 전체 이름(예: 다음과 같이 표시)이 표시됩니다.

    Headed : BackgroundApplication1-uwp_cqewk5knvpvee!App Headless : BackgroundApplication1-uwp_1.0.0.0_x86__cqewk5knvpvee

  4. 이 유틸리티는 백그라운드 애플리케이션이 '헤드리스' 애플리케이션이며 올바르게 설치되었는지 확인합니다. 백그라운드 애플리케이션에 대한 헤드 항목도 표시될 수 있지만 무시해도 됩니다.

  5. 이제 이 앱을 '시작 앱'으로 쉽게 설정할 수 있습니다. 명령을 입력하기만 하면 합니다.

    [<your IP address>]: PS C:\> iotstartup add headless BackgroundApplication1

  6. 이 유틸리티는 백그라운드 애플리케이션이 헤드리스 '시작 앱' 목록에 추가되었는지 확인합니다.

    Added Headless: BackgroundApplication1-uwp_1.0.0.0_x86__cqewk5knvpveeplication1

  7. 계속해서 Windows IoT Core 디바이스를 다시 시작합니다. PS 세션에서 종료 명령을 실행할 수 있습니다.

    [<your IP address>]: PS C:\> shutdown /r /t 0

  8. 디바이스가 다시 시작되면 백그라운드 애플리케이션이 자동으로 시작되고 Windows 10 IoT Core 중지될 때마다 다시 시작되도록 합니다.

    참고

    백그라운드 앱이 자동으로 실행되도록 등록되면 앱이 종료되거나 충돌하면 자동으로 다시 시작됩니다. 앱이 시작되거나 다시 시작되는 이유를 알 수 없으므로 다시 시작 시 특별한 조치를 취하려면 앱에서 앱 상태를 추적해야 합니다.

  9. 다음 명령을 입력하여 헤드리스 Startup Apps 목록에서 백그라운드 애플리케이션을 제거할 수 있습니다.

    [<your IP address>]: PS C:\> iotstartup remove headless BackgroundApplication1

  10. 이 유틸리티는 헤드리스 '시작 앱' 목록에서 백그라운드 애플리케이션이 제거되었음을 확인합니다.

    Removed headless: BackgroundApplication1-uwp_1.0.0.0_x86__cqewk5knvpvee

참고 항목

사용자 지정 이미지를 빌드할 때 백그라운드 앱을 추가하려면 Appx 패키지 만들기를 참조하세요.