이 항목에서는 반환 데이터를 설정하는 방법에 대한 예제를 제공합니다. 사용자 지정 반환 데이터가 있는 경우, 만든 데이터를 검색할 수 있도록 공급자 및 사용자 지정 방법을 사용하여 데이터를 지원하세요.
// Provider Callback
[](XAsyncOp op, const XAsyncProviderData* providerData)
{
switch(op)
{
case XAsyncOp::GetResult:
memcpy(providerData->buffer, &context->result, sizeof(uint64_t));
break;
case XAsyncOp::DoWork:
context->result = 12345678;
XAsyncComplete(providerData->async, S_OK, sizeof(uint64_t));
break;
// Other cases..
}
}
설정 예제에 설명된 대로 공급자는 먼저 XAsyncComplete에 버퍼 크기를 지정하고 GetResult 케이스에 채워서 반환 데이터에 대한 지원을 추가해야 합니다. 지원이 추가된 후 해당 호출자에 대한 결과를 검색하려면 메서드를 추가합니다.
HRESULT CustomProviderMethodAsyncResult(XAsyncBlock* async, uint64_t* outResult)
{
return XAsyncGetResult(async, CustomProviderMethodAsync,
sizeof(uint64_t), outResult, nullptr);
}
XAsyncGetResult를 호출할 수는 있으나 이전 메서드에서 사용자 지정 공급자 메서드 간에 읽을 수 있는 쌍을 만듭니다. 비동기 결과에 필요한 데이터 형식으로 자동으로 변환됩니다. 또한 이 메서드는 완료 콜백 내에서 작업 결과를 수집하는 데 사용하는 것이 안전합니다.
참고 항목
XAsyncProvider 라이브러리 개요
사용자 지정 공급자 설정(예제)
호출 메서드 설정(예제)
취소가능성 설정(예제)
XAsyncProvider