2013-01-18 4 views
0

WinRT 구성 요소를 만드는 데 C++/CX를 사용하려고합니다. 나는 다음 코드를 가지고 있으며 컴파일되지 않는다. 그게 뭐가 잘못 되었 니? PPL 작업은 결과가있는 작업 인 경우 투명하게 IAsyncOperation으로 변환해야한다는 것을 알고 있습니다.WinRT C++/CX 작업이 컴파일되지 않습니다.

IAsyncOperation<Boolean>^ Class::OpAsync() 
{ 
    return create_task([]() { return true; }); 
} 

오류 메시지

error C2440: 'return' : cannot convert from 'Concurrency::task<_ReturnType>' to 'Windows::Foundation::IAsyncOperation<TResult> ^' 
      with 
      [ 
       _ReturnType=bool 
      ] 
      and 
      [ 
       TResult=bool 
      ] 
      No user-defined-conversion operator available, or 
      No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called 

답변

3

create_task() 함수는 IAsyncOperation을 복용하고 작업에 돌려입니다 (기본적으로, 당신이 원하는하는지의 반대).

작업을 IAsyncOperation으로 변환하려면 대신 create_async()를 호출해야합니다.