다음을 통해 공유


WsAsyncExecute 함수(webservices.h)

비동기 작업을 구현하기 위한 도우미 함수입니다.

구문

HRESULT WsAsyncExecute(
  [in]           WS_ASYNC_STATE         *asyncState,
  [in, optional] WS_ASYNC_FUNCTION      operation,
  [in]           WS_CALLBACK_MODEL      callbackModel,
  [in]           void                   *callbackState,
  [in, optional] const WS_ASYNC_CONTEXT *asyncContext,
  [in, optional] WS_ERROR               *error
);

매개 변수

[in] asyncState

비동기 작업 중에 사용되는 WS_ASYNC_STATE 구조체에 대한 포인터입니다. 이는 직접 사용하기 위한 것이 아닌 상태 유지 관리 매개 변수입니다. 애플리케이션은 WS_ASYNC_STATE 구조를 할당하고 전체 비동기 작업 중에 활성 상태로 유지되어야 합니다. 비동기 작업이 완료된 후 WS_ASYNC_STATE 구조를 다시 사용할 수 있습니다.

[in, optional] operation

수행할 초기 비동기 작업을 나타냅니다.

[in] callbackModel

콜백이 long 또는 short로 호출되는지 여부를 나타냅니다. 자세한 내용은 WS_CALLBACK_MODEL

[in] callbackState

WS_ASYNC_FUNCTION 전달되는 사용자 정의 값에 대한 void 포인터입니다.

[in, optional] asyncContext

함수를 비동기적으로 호출하기 위한 정보에 대한 포인터입니다. NULL을 전달하여 함수를 동기적으로 호출합니다.

[in, optional] error

함수가 실패할 경우 추가 오류 정보를 수신하는 WS_ERROR 구조체에 대한 포인터입니다.

반환 값

함수가 성공하면 NO_ERROR 반환합니다. 그렇지 않으면 HRESULT 오류 코드를 반환합니다.

설명

WWSAPI가 비동기 작업을 처리하는 방법을 이해하려면 비동기 모델 항목을 참조하세요.

대부분의 경우 비동기 작업은 다른 비동기 작업으로 구성됩니다. 각 비동기 작업은 콜백이 호출됨을 나타내는 WS_S_ASYNC 또는 다른 성공 또는 실패 코드를 반환할 수 있습니다. 이 경우 콜백이 호출되지 않습니다. 호출자가 동기적으로 작업을 수행하도록 요청하고 있음을 나타내는 NULL WS_ASYNC_CONTEXT 수락하도록 작업을 준비해야 합니다. 또한 콜백이 적절하게 호출되도록 해야 합니다. 복잡한 비동기 작업에서 WsAsyncExecute 는 이러한 세부 정보를 간소화합니다.

WsAsyncExecute 는 비동기 작업을 시작하고 비동기 작업이 완료될 때 호출할 함수를 나타낼 수 있는 사용자 정의 콜백을 호출하여 작동합니다. 이 시퀀스는 콜백이 호출할 다른 함수를 설정하지 않을 때까지 계속됩니다. 이 시점에서 WS_ASYNC_CONTEXT 지정된 콜백은 작업이 비동기적으로 완료된 경우 호출됩니다.

WS_ASYNC_STATE 매개 변수는 WsAsyncExecute에서 상태를 유지하는 데 사용되며 호출자가 초기화, 검사 또는 사용할 수 없습니다. 그러나 호출자는 WS_ASYNC_STATE 할당하고 전체 비동기 작업 중에 활성 상태로 유지되어야 합니다. 비동기 작업이 완료되면 WS_ASYNC_STATE 다시 사용할 수 있습니다.

AsyncAdd3ExplicitExampleAsyncAdd3ImplicitExample 예제에서는 WsAsyncExecute를 사용하여 동일한 비동기 함수를 수동으로 구현하는 방법을 보여 줍니다.

요구 사항

   
지원되는 최소 클라이언트 Windows 7 [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2008 R2 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 webservices.h
라이브러리 WebServices.lib
DLL WebServices.dll