이 항목은 아직 평가되지 않았습니다.- 이 항목 평가

비동기 프로그래밍(Windows 스토어 앱)

비동기 프로그래밍을 사용하면 앱이 오랜 시간이 소요되는 작업을 수행할 때 응답 가능 상태를 유지하는 데 도움이 됩니다. 예를 들어, 인터넷에서 정보를 다운로드하는 앱은 정보가 도착할 때까지 몇 초간 기다려야 합니다. UI 스레드에서 동기 메서드를 사용하여 정보를 검색할 경우 메서드가 반환할 때까지 앱이 차단됩니다. 앱은 사용자 조작에 반응하지 않으며, 사용자는 앱이 반응하지 않는 것처럼 보이므로 불만을 느낄 수 있습니다. 따라서 더 좋은 방법은 비동기 프로그래밍을 사용하여 작업이 완료되기를 기다리는 동안에도 앱이 계속 실행되고 UI에 응답하는 것입니다.

완료하는 데 오랜 시간이 걸릴 수 있는 메서드의 경우 비동기 프로그램이 표준이며 Windows 런타임에서도 예외가 아닙니다. JavaScript, C#, Visual Basic 및 C++ 각각은 비동기 메서드에 언어 지원을 제공합니다.

Windows 런타임의 비동기 프로그래밍

대부분의 Windows 런타임 기능(예: MediaCaptureStorageFile)은 비동기 함수로 표시됩니다. 규칙에 따라, 비동기 함수의 이름은 호출이 반환된 후 실행의 일부가 발생할 수 있음을 나타내기 위해 "Async"로 끝납니다.

Windows 스토어 앱에 비동기 API를 사용할 경우 코드는 일관된 방식으로 비차단 호출을 만듭니다. API에 이러한 비동기 패턴을 구현하면 호출자는 예측 가능한 방식으로 코드를 이해하고 사용할 수 있습니다.

다음은 비동기 Windows 런타임 API를 호출해야 하는 일반적인 작업의 예입니다.

  • 메시지 대화 상자 표시

  • 파일 시스템 작업

  • 인터넷에서 데이터 주고받기

Windows 런타임 비동기 API를 사용하면 명시적으로 스레드를 관리하거나 기본 구현을 직접 조작할 필요가 없습니다.

각 프로그래밍 언어는 고유한 방식으로 비동기 패턴을 지원합니다.

프로그래밍 언어비동기 표현
JavaScript promise 개체, then 함수
C#이후 개체, await 연산자
Microsoft Visual Basic .NET이후 개체, Await 연산자
Visual C++task 클래스, .then 메서드

 

JavaScript를 사용하는 Windows 스토어 앱의 비동기 패턴

JavaScript에서 비동기 프로그래밍은 비동기 메서드가 promise 개체를 반환하게 하여 Common JS Promises/A 제안 표준을 따릅니다. Promise는 Windows 런타임과 JavaScript용 Windows 라이브러리에 모두 사용됩니다.

Promise 개체는 차후에 수행될 값을 나타냅니다. Windows 런타임에서는 factory 함수로부터 promise 개체를 가져옵니다. 규칙에 따라 이 개체의 이름은 "Async"로 끝납니다.

대부분의 경우 비동기 함수 호출은 기본 함수를 호출하는 것만큼 간단합니다. 차이점은 then 또는 done 함수를 사용하여 결과나 오류에 대한 처리기를 할당하고 작업을 시작한다는 것입니다.

C# 및 Microsoft Visual Basic으로 작성된 Windows 스토어 앱의 비동기 패턴

C# 또는 Visual Basic으로 작성된 일반적인 코드 세그먼트는 동기식으로 실행됩니다. 즉, 실행된 줄은 다음 줄이 실행되기 전에 완료됩니다. 개발자들이 비동기 코드를 작성할 수 있도록 하는 비동기 프로그래밍 모델 및 이벤트 비동기 패턴 같은 다양한 프로그래밍 모델이 수년 간 사용되어 왔습니다. 이러한 모델 덕분에 비동기 실행이 가능했지만 그 결과 코드는 코드가 수행하려는 작업에 초점을 두는 대신 비동기 코드 실행의 머캐닉을 강조하는 경향이 있습니다. 이로 인해 비동기 코드를 작성하기 어렵고, 이해하고 유지 관리하기도 어렵습니다. 이제 Windows 런타임, .NET Framework, C# 및 Visual Basic 컴파일러에는 코드에서 비동기 머캐닉을 추출하는 기능이 추가되어 코드가 작업을 수행하는 방법 대신 수행할 작업에 초점을 둔 비동기 코드를 작성할 수 있습니다. 따라서 동기 코드와 유사한 모양의 비동기 코드를 작성할 수 있습니다. C# 또는 Visual Basic에서 Windows 런타임의 비동기 API를 호출하는 방법에 대한 자세한 내용은 빠른 시작: 비동기 프로그래밍에 await 연산자 사용을 참조하세요.

C++로 작성된 Windows 스토어 앱의 비동기 패턴

Visual C++에서 비동기 프로그래밍은 task classthen 멤버 함수를 기반으로 합니다. 구문은 JavaScript promise의 구문과 유사합니다. task class 클래스 및 관련 유형 또한 스레드 컨텍스트에 대한 취소 및 관리 기능을 제공합니다. 자세한 내용은 C++의 비동기 프로그래밍을 참조하세요.

create_async function은 JavaScript 또는 Windows 런타임을 지원하는 다른 언어에서 사용할 수 있는 비동기 API 작성에 대한 지원을 제공합니다. 자세한 내용은 C++에서 Windows 스토어 앱에 대한 비동기 작업 만들기를 참조하세요.

관련 항목

Silverlight Async Project Explorer
JavaScript의 비동기 프로그래밍
빠른 시작: 비동기 프로그래밍에 await 연산자 사용
Async 및 Await를 사용한 비동기 프로그래밍(C# 및 Visual Basic)
Reversi 샘플 기능 시나리오: 비동기 코드

 

 

© 2013 Microsoft. All rights reserved.