2012-10-15 1 views
1

내가 WRL를 사용하여 비동기를 지원하는 WinRT 구성 요소를 작성하려는 WRL WinRT 구성 요소와 create_async()를 사용할 수 없습니다, 그러나 나는 심지어 내가 포함 create_async()이 정의되어있는 ppltask.husing namespace concurrency WRL 패턴 백그라운드 작업을 만드는 방법 ?

HRESULT GetStreamAsync([out, retval] IAsyncOperation<IRRandomAccessStream*>** operation); 

나는 또한 IThreadPoolStatics->RunAsync()을 사용하려고하지만, 그것은 단지 IAsyncAction의 경우와 반환 값없이 사용할 수 있습니다 보인다

내 기능은 같다. 누구든지 도울 수 있니?

답변

1

concurrency::create_async은 C++/CX에서만 사용할 수 있습니다 (설명서에는 명시 적으로 언급되지 않았지만 가능한 모든 반환 유형은 C++/CX에서만 사용할 수 있음을 나타내는 해트 유형입니다).

WRL에는 Microsoft::WRL::AsyncBase 기본 클래스 템플릿이 포함되어 있으며이 템플릿을 사용하여 C++ 및 WRL을 사용하여 비동기 작업을 구현할 수 있습니다.

나는 std::future 또는 concurrency::task을 감싸는 표준 구현의 모르겠지만, 당신은 (async_operation_basetask_based_async_operation에 대한 검색) 부스트 라이센스 CxxReflect library의 구현의 예를 찾을 수 있습니다.

+0

CxxReflect 라이브러리의 링크가 일부 MSDN 페이지를 가리키는 것 같습니다 ... –